Выполнение арифметики и передача его к следующей команде

Я знаю, как сделать это в/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...

2
задан 23.12.2010, 18:28

2 ответа

Дайте этому попытку:

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

Попробуйте обоих и посмотрите, какой работает лучше на Вас.

4
ответ дан 08.12.2019, 05:52
  1. Насколько я знаю, что cmd.exe не предлагает легко доступной функции для оценки невыполнения функции.

  2. Если Вы просто хотели ожидать 1 более второго, просто вставьте другой-n 2 127.0.0.1 ping в него.

  3. Можно рассмотреть установку команды сна от административных средств Windows Server.

  4. Как насчет установки cygwin/powershell?

Править: исправьте мою глупость параметра ping

1
ответ дан 08.12.2019, 05:52

Теги

Похожие вопросы