Фиктивная команда в Windows CMD
В Linux у нас есть makefile:
$(foreach A,a b,echo $(A) &&) true
Это работает и эхо
a
b
Теперь мы хотим перенести его на Windows. Самая короткая команда в Windows, которая ничего не делает:
if 0==1 0
Таким образом, пример make-файла будет выглядеть
$(foreach A,a b,echo $(A) &&) if 0==1 0
Есть ли в Windows какая-нибудь фиктивная команда в коробке (которая действительно ничего не делает)? Или любой хороший взломать?
5 ответов
call
Команда без каких-либо аргументов ничего не делает и не имеет побочного эффекта, как rem
есть.
Пример:
echo Wait for it...
call
echo Nothing happened!
Старая тема, новый ответ.
Я использую cd.
когда я хочу ничего не делать в Windows (и я часто это делаю), поскольку "смени каталог на себя" вообще не имеет побочных эффектов, насколько я вижу.
Нет однозначного ответа на вопрос, какая фиктивная команда является самой короткой, потому что у фиктивной команды есть несколько различных целей (контекстов), которые могут привести к различным вариантам выбора. Перечисление от лучшего к худшему.
@
превосходит по длине и ничего не делает. Хорошо работает в конце командной строки.
rem
отлично, и в command.com
раньше это была команда, поэтому она работала даже с перенаправлением ввода / вывода. Сегодня (вcmd.exe
) он начинает комментарий, поэтому его можно использовать только в конце командной строки; любое перенаправление тоже закомментировано.
echo.
работает даже с перенаправлением ввода / вывода. Эта точка не печатается, состояние эха не изменяется. Если используется в начале пакета команд, вам может потребоваться написать его по буквам@echo.
если вы не хотите, чтобы сама фиктивная команда выводилась на стандартный вывод; но это не особенностьecho
команда.
cd.
является аналогом true
в Linux. Фрейм, бросающий вызов OP, на самом деле делает что-то особенное: устанавливает ERRORLEVEL в 0. Он работает с перенаправлением.
call
является аналогом false
в Linux. Команда считает, что заслуживает того, чтобы ей сказали, что следует вызывать, но если вы ничего не упомянули, она позволяет вам обойтись без сообщения об ошибке, но установит для ERRORLEVEL положительное значение. Работает с перенаправлением.
(Это резюме основано на трех существующих ответах, а также на этом ответе на еще один вопрос на другом сайте. Попытка дать старомодный канонический ответ.)
break — это то, что ищет любой, кому нужна неактивная команда в Windows cmd. Он ничего не делал со времен Windows 98 (или даже раньше).