2

我制作了一个小批量脚本来生成文件的 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,则在Cmderecho %output: =% >%1.md5中执行的批处理文件而不是在 Windows 中执行,但它会输出一个我不想要的附加换行符。cmd.exe

到底是怎么回事?

编辑:这条线不会挂在Cmder的批处理中:

set /p ="Hello" <nul

此行挂在Cmder中的批处理上:

set /p ="Hello" <nul >out

这两行都在 Windows 命令处理器在命令提示符窗口中执行的批处理文件中工作。

4

0 回答 0