ユーザーにディレクトリを要求し、このディレクトリから別のディレクトリに複数のファイルをコピーするバッチスクリプトを作成しようとしています。これを行うには、ラベルとset /p
を入力するための簡単なループがあります。問題は、ctrl+c
を押してこのループから抜け出そうとしても、必ずしも機能しないということです。Ctrl + CがWindowsバッチスクリプトを確実に終了しない
:checkloop
@set /p READMEPATH=Please enter the location of readme.txt:
@if not exist "%READMEPATH%\README.txt" goto somethingmissing
@goto allfound
:somethingmissing
@echo Can't find readme in directory "%READMEPATH%"
@goto checkloop
:allfound
@echo Okay, found
サンプル出力は
Please enter the location of readme.txt:
Can't find readme in directory ""
Please enter the location of readme.txt: ^CCan't find readme in directory ""
Please enter the location of readme.txt: ^CCan't find readme in directory ""
Please enter the location of readme.txt: ^CCan't find readme in directory ""
Please enter the location of readme.txt: ^CCan't find readme in directory ""
Please enter the location of readme.txt: ^CCan't find readme in directory ""
Please enter the location of readme.txt: ^CTerminate batch job (Y/N)? y
叩くCTRL +のようなものはC私はEnterキーを押すと、それが最終的に動作するまでスクリプトは、続くかのように繰り返し動作します。試行回数は可変です。ときどきすぐに働くこともあれば2-3になることもありますが、めったに7回以上かかることはまれです。
OSはWindows 10です。
私は、SET呼び出し後に%errorlevel%をチェックして失敗したことを確認する必要があると思います。 –
@HansPassant '%errorlevel%'の問題は、CTRL-Cと空の入力に対して1に設定されていることです。 – jeb
おめでとう、両方の理由で試してみることをやめてください。 –