Как я могу подавить подтверждение" завершить пакетное задание (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 интерпретировать его.

чтобы продемонстрировать поведение

примеры предполагают, что узел.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 также перечислены