ファイルの MD5 サムを生成する小さなバッチ スクリプトを作成しました。行を削除するとうまく機能しますが、この行を離れると@echo off
、コンソール エミュレーターCmderバージョン 1.1.4.1 での実行がハングします。
@echo off
if [%1]==[] goto usage
for /f "delims=" %%i in ('certutil -hashfile %1 MD5 ^| find /v "CertUtil" ^| find /v "MD5"') do set output=%%i
set /p =%output: =%<nul >%1.md5
goto :eof
:usage
@echo Usage: %0 FILENAME
exit /b 1
set /p =%output: =%<nul >%1.md5
行をに置き換えると、Windows ではなくCmderecho %output: =% >%1.md5
で実行されるバッチ ファイルは機能しますが、不要な改行が追加で出力されます。cmd.exe
何が起こっている?
編集:この行はCmderのバッチ処理でハングしません:
set /p ="Hello" <nul
この行はCmderでのバッチ処理でハングします:
set /p ="Hello" <nul >out
どちらの行も、コマンド プロンプト ウィンドウで Windows コマンド プロセッサによって実行されるバッチ ファイルで機能します。