Я знаю, как сделать это в/bin/sh, но я борюсь немного в Windows.
Я знаю, что можно сделать арифметику на 32-разрядных целых числах со знаком с
SET /a 2+2
4
Но как я передаю это следующей команде? Например, процесс, который я хочу выполнить, следующие.
Потребительские выпуски Windows, никакой собственный компонент не автоматизировал функцию сна (я верю?) - лучший способ выполнить сон состоит в том, чтобы использовать PING
в сотрудничестве с -n
переключатель для получения этого много секунд, минус одна, сна. Следующая команда является эффективной для тихого сна:
PING localhost -n 3 > NUL
Но я хочу исказить это в команду сна. Я хотел бы иметь его изящный так, чтобы Вы ввели фактический номер секунд, Вы хотите спать после команды прямо сейчас я могу сделать
DOSKEY SLEEP=PING 127.0.0.1 -n $1 > NUL
Который работает, но это всегда - 1 второй меньше, чем Ваш вход, поэтому если бы Вы хотели спать в течение одной секунды, то необходимо было бы использовать команду SLEEP 2
. Это не точно идеально.
Есть ли некоторый способ для меня передать арифметику $1+1
и передайте его на следующую команду в Windows? Я предполагаю, что существует некоторый способ использовать STDOUT...
Дайте этому попытку:
DOSKEY SLEEP==set /a t=$1+1 $G NULL $T PING 127.0.0.1 -n %t% $G NULL
$T
разделитель команды, эквивалентный &
.
Обратите внимание что > NUL
перенаправляет вывод DOSKEY
вместо макроса. Вы видите, что это не включено, если Вы делаете DOSKEY /MACROS
. Чтобы сделать перенаправление, которое Вы хотите, добавляет $G NUL
в конец строки как показано выше.
Что-то вроде этого будет также работать:
DOSKEY SLEEP=for /f %t in ('set /a $1+1') do @PING 127.0.0.1 -n %t $G NUL
Попробуйте обоих и посмотрите, какой работает лучше на Вас.
Насколько я знаю, что cmd.exe не предлагает легко доступной функции для оценки невыполнения функции.
Если Вы просто хотели ожидать 1 более второго, просто вставьте другой-n 2 127.0.0.1 ping в него.
Можно рассмотреть установку команды сна от административных средств Windows Server.
Как насчет установки cygwin/powershell?
Править: исправьте мою глупость параметра ping