Работы для меня, по крайней мере:
> taskkill /f /im powershell.exe && echo worked || echo not worked
SUCCESS: The process "powershell.exe" with PID 3228 has been terminated.
worked
> taskkill /f /im powershell.exe && echo worked || echo not worked
ERROR: The process "powershell.exe" not found.
not worked
Так taskkill
это возвращает правильный код выхода. Редирект его вывода не имеет к этому никакого отношения. Но уровень ошибки для отказа - 128. Вы действительно должны использовать правильную идиому для проверки ошибок.
Также кажется, что taskkill
печатает до stderr
, поэтому вы видите его выход еще при переадресации stdout
. Вы можете рассмотреть возможность перезаписи выше код:
taskkill /F /IM itunes.exe >nul 2>&1
if errorlevel 1 (echo iTunes not found.) else (echo iTunes is killed.)
2>&1
перенаправляет стандартный вывод ошибок в огромном небытия. if errorlevel 1
проверяет errorlevel
быть по крайней мере 1, которые должны работать в этой точке:
ERRORLEVEL номер Определяет истинное состояние, если последний запуск программы возвращается код выхода, равный или больше, чем количество указанного. - help if
Обычно проверка errorlevel
с if %errorlevel%==
является довольно плохая идея, если вы не в сравнении с 0. Семантика для выхода из кодов, что отказ anything
ненулевых сигналов. Ваше предположение здесь состояло в том, что taskkill
вернул бы 1
при ошибке.
Анны, позвольте мне спросить, почему вы делаете это в бесконечной петле? taskkill
уже убивает все экземпляры itunes.exe
. И вы работаете в жестком цикле без каких-либо задержек, поэтому ваши пакетные файлы, вероятно, потребляют одно ядро ЦП, пока оно работает.
ETA: Оставьте свой отзыв: Почему на самом деле фигурные скобки? Блоки в пакетных файлах ограничены круглыми скобками.
'почему на затылке фигурные скобки', ну, я использую их, пока я работал с ними. Я не знаю; Мне просто нравится. Это выглядит лучше, я думаю. –
Ну, если вы используете их в пакетных файлах, то ожидайте, что все будет не так. Если вы пишете код на языке, вы должны использовать грамматику языка, независимо от того, что выглядит лучше или нет. Кудрявые скобки не работают как разделители блоков в партии. – Joey
Я думал, что они сделали. По крайней мере, они работали для кодов, которые я использовал. Я работаю с партией более 1 года и развился с фигурными фигурными скобками, снова и снова, и он отлично работает. Мои клиенты (ака youtubers;)) говорят, что это отлично работает для них. –