我的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
我失去理智了吗?我在这里想念什么?
||并&&响应上一个命令的返回码(左边最后执行的命令)。无论上下文如何,所有程序都会以错误代码退出。
EXIT /B 1设置批处理错误级别,这严格来说是一个 cmd.exe 概念。
返回码和 ERRORLEVEL 不是一回事!
执行批处理文件时,如果批处理文件是通过CALL.
执行批处理文件时无需CALL,&&并||响应脚本内执行的最后一个命令。
EXIT /B 1将 ERRORLEVEL 设置为 1,但命令执行成功,因此返回码为 0。
当CALL使用 时,CALL 命令在脚本终止后查看 ERRORLEVEL,并将返回代码设置为 ERRORLEVEL。
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |