押すと Ctrl+C PowerShellでは、次の情報を受け取ります。
バッチジョブを終了しますか(Y/N)?
https://superuser.com/questions/35698/how-to-supress-terminate-batch-job-y-n-confirmation と同様ですが、WindowsPowerShellを除きます。
PowerShellは、CMDよりもバッチジョブを制御できますか?
の動作は、PowerShellが原因ではなく、PowerShellが変更することもできません( PowerShellソースコードリポジトリ が含まれていないことからもわかります)プロンプトメッセージ)。
の動作は組み込みの_cmd.exe
_-この場合、Powershellは_.cmd
_を呼び出していますfile(バッチファイル)。これは_cmd.exe
_によって解釈されます。
ターゲット実行可能ファイルの呼び出しを明示的に制御する場合は、Powershellに移動することでこれを修正できます-これには独自の考慮事項があることに注意してください。以下を参照してください。
ターゲット実行可能ファイルの呼び出しを明示的に制御しないと、運が悪くなります(サードパーティをインストールする意思がない限り_cmd.exe
_置換)およびを押す必要があります Ctrl+C2回実行を終了します。
A [n ill-advised] workaround is to modify the _cmd.exe
_ binary -を参照してください プロンプトを抑制するために_cmd.exe
_実行可能ファイルにパッチを適用する方法の説明が記載された記事 。さらに、機能リクエストを GitHub に投稿して、この動作をソースで修正するようにリクエストできますが、下位互換性のために発生する可能性は低いです。
例では、Node.jsがインストールされており、_node.exe
_がPATHに含まれていることを前提としています。
まず、_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
がcmd
ファイルであることを示すには:gulp
のCLIを介してコマンドを実行していると言います。
Windowsでは、gulp
CLIのエントリポイントは_gulp.cmd
_-つまり、バッチファイル。これが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
_には、extension-lessnix-シェルスクリプト、_...\gulp
_もリストされていることに注意してください。ただし、_cmd.exe
_/Powershellからは、このようなシェルスクリプトを直接実行することはできず、実行されるのは_...\gulp.cmd
_ --- バッチファイル-です。
(疑わしい場合は、_@set /p dummy="Press a key"
_ファイルの先頭に_gulp.cmd
_などのコマンドを配置すると、gulp
を呼び出すとこのコマンドが実行されることがわかります。 _.cmd
_拡張子なし。
また、no _gulp.exe
_があることに注意してください。)
より一般的には、Windowsでは、プロジェクトの_node_modules\.bin
_サブフォルダーには、プロジェクトがローカルで依存するパッケージに付属するCLIのCLIエントリポイントのpairsが含まれます。
node_modules\.bin\<some-cli>
_はUnixシェルスクリプトです(その実行中のインタープリターは Shebang line を介して制御されます)。node_modules\.bin\<some-cli>.cmd
_は、Windowsのヘルパーバッチファイルです。Npmモジュールのコンテキストでは、PowerShellスクリプト(_*.ps1
_)がWindowsのヘルパースクリプトとして使用された場合、問題は解決します。これを行うためのnpm
、yarn
および同様のソフトウェアのチケットがあります。いくつかの欠点もあります。
_*.ps1
_ファイルは、PowerShellの外部、特に_cmd.exe
_およびファイルエクスプローラーから直接実行することはできません(変更は簡単ではありません)。
Windows 10の時点で、PowerShellはまだデフォルトのシェルとして_cmd.exe
_を完全に置き換えていません。
PowerShellからと呼ばれると、_*.ps1
_ファイルが検出され、インプロセスで実行されるため、現時点で考えられる妥協案は、npmプロジェクトがまた提供することです。 _*.ps1
_ヘルパースクリプト。同じ名前の_*.cmd
_ファイルよりも優先されます。
他の回答ノートと同様に、正しい修正は、cmd
スクリプトをps1
バージョンに置き換えることです。
ただし、ハイパーシェルのユーザー向けの別の回避策は ハイパーはい、自動的にy
にヒットするプラグイン =プロンプトが表示されたとき。