我正在批处理文件中运行一个命令,其中一个操作表示成功,另一个操作表示失败。问题是,除非第一个操作有,否则&
它将不起作用。例如,这将不起作用,因为无论如何它都会执行这两个命令:
7z a "FILE.7z" "INPUT" ( && sounder "Success.wav" ) || ( sounder "Error.wav" & echo. & pause & exit )
甚至尝试这样做:
( 7z a "FILE.7z" "INPUT" && sounder "Success.wav" ) || ( sounder "Error.wav" & echo. & pause & exit )
但这确实有效:
7z a "FILE.7z" "INPUT" ( && sounder "Success.wav" & echo. ) || ( sounder "Error.wav" & echo. & pause & exit )
这是为什么?
我正在使用 Windows 10 和 cmd。
答案1
本网站显示此示例:
commandA && commandB || commandC
如果命令 A 成功则运行命令 B,如果命令 A 失败则运行命令 C (请注意,如果命令 B 失败,也会触发运行命令 C)
基于此我相信这会有效?
7z a "FILE.7z" "INPUT" && sounder "Success.wav" || sounder "Error.wav"
至于为什么当您在一行上连接多个命令时批处理脚本非常繁琐。您可以检查命令是否产生错误(通常为 0 以外的任何错误),然后执行以下操作或执行该操作:
7z a "FILE.7z"
IF %ERRORLEVEL% NEQ 0 (sounder "Error.wav") ELSE (sounder "Error.wav")
更多阅读: