Как я могу подавить подтверждение" завершить пакетное задание (Y/N) " в PowerShell?
когда я нажимаю Ctrl+C в PowerShell, я получаю:
завершить пакетное задание (Y/N)?
подобно https://superuser.com/questions/35698/how-to-supress-terminate-batch-job-y-n-confirmationза исключением Windows PowerShell.
предоставляет ли PowerShell больший контроль над пакетными заданиями, чем CMD?
1 ответов
на поведение не вызвано PowerShell, и PowerShell не может его изменить.
поведение встроено в cmd.exe
- Powershell, в этом случае, вызывает использует cmd.exe
интерпретировать его.
если вы явно не контролируете вызов целевого исполняемого файла, вам не повезло (если вы не хотите устанавливать сторонние
cmd.exe
замена), и должно пресс Ctrl+C два раза для того, чтобы завершить выполнение.правильное решение потребует изменения
cmd.exe
- см. статья с инструкциями о том, как исправитьcmd.exe
исполняемый файл для подавления запроса. Вы можете оставить запрос на GitHub исправить это поведение.на PowerShell исходный код РЕПО не содержат сообщение.
чтобы продемонстрировать поведение
примеры предполагают, что узел.JS установлен и что node.exe
поэтому на вашем пути:
во-первых, вызов node.exe
сразу, с плотной петлей которая требует, что вы отжимаете Ctrl+C завершить процесс.
PS> node -e "while (true);"
как вы увидите, нажав Ctrl+C мгновенно завершает процесс - нет подтверждение.
теперь давайте создадим пример пакетного файла, который вызывает ту же команду и вызывать этот батник:
PS> "@echo off`nnode -e `"while (true);`"" | Set-Content test.cmd
PS> ./test.cmd
как вы увидите, нажав Ctrl+C теперь представляет нежелательные Terminate batch job (Y/N)?
запрос. (Вы получите такое же поведение, если запустите пакетный файл из cmd.exe
.)
демонстрация работает
вы говорите, что выполняете свою команду через gulp
'ы Кли.
в Windows, точка входа для gulp
CLI-это gulp.cmd
- то есть a пакетным файлом. вот как это работает вообще для npm
-пакет "двоичные файлы" (исполняемые файлы), реализованные в виде JS-файлов или сценариев оболочки.
это gulp
вызывает gulp.cmd
можно проверить следующим образом:
# Execute from a project folder that has `gulp` installed as a dependency.
# If `gulp` is installed *globally*
# Note: CLI `npx` requires npm version 5.2.0+
PS C:\some\NodeJs\project> npx where gulp
вы увидите что-то вроде:
C:\some\NodeJs\project\node_modules\.bin\gulp
C:\some\NodeJs\project\node_modules\.bin\gulp.cmd
обратите внимание, что where.exe
также перечислены