链接批处理脚本时出现意外的双与号/管道行为

Kev*_*vin 7 cmd batch-file

我的foo.bat文件:

exit /b 1
Run Code Online (Sandbox Code Playgroud)

我在cmd提示符下执行的操作:

foo.bat && echo "OK"
Run Code Online (Sandbox Code Playgroud)

结果:

exit /b 1
"OK"
Run Code Online (Sandbox Code Playgroud)

但是,当我使用双管道时,回声不会发生:

foo.bat || echo "OK"
Run Code Online (Sandbox Code Playgroud)

结果:

exit /b 1
Run Code Online (Sandbox Code Playgroud)

这与我期望的&&和||完全相反。去做。请参阅https://ss64.com/nt/call.html,其中显示:

commandA && commandB运行commandA,如果成功,则运行commandB

commandA || commandB运行commandA,如果失败,则运行commandB

我失去理智了吗?我在这里想念什么?

dbe*_*ham 4

||&&响应上一个命令的返回码(左边最后执行的命令)。无论上下文如何,所有程序都会以错误代码退出。

EXIT /B 1设置批处理错误级别,这严格来说是一个 cmd.exe 概念。

返回码和 ERRORLEVEL 不是一回事

执行批处理文件时,如果批处理文件是通过CALL.

执行批处理文件时无需CALL,&&||响应脚本内执行的最后一个命令。

EXIT /B 1将 ERRORLEVEL 设置为 1,但命令执行成功,因此返回码为 0。

CALL使用 时,CALL 命令在脚本终止后查看 ERRORLEVEL,并将返回代码设置为 ERRORLEVEL。