【发布时间】:2015-06-27 03:27:51
【问题描述】:
我正在学习 Windows 批处理脚本。当复制、移动或删除操作失败时,我需要提出错误。我制作了一个示例脚本,由于某种原因,当操作失败时,我无法让 ERRORLEVEL 上升。我运行脚本,文件不存在或在另一个程序中打开,stderr 消息输出到控制台,但 ERRORLEVEL 永远不会上升,这是为什么?另外,如果我不能让 ERRORLEVEL 上升,有什么方法可以将 stderr 传递到我可以检查的变量中?
我的代码如下:
`@Echo Off
ECHO.
Set /P myVar=Please enter a value:
Echo var = %myVar%
ECHO Trying to delete the file dummy.csv >> log.txt
Set myVar2 = nothing
DEL C:\dummy420.csv
IF NOT ERRORLEVEL 0 ECHO There was an error
ECHO %ERRORLEVEL%
REM 2>myVar2
REM Echo 2>
REM Echo %myVar2%
Echo 2>&1
REM && (echo yourCommand was successful) || (echo yourCommand failed)
IF NOT ERRORLEVEL 0 ECHO There was an error
ECHO %ERRORLEVEL%
Move ""C:\dummy420.csv" D:\"
IF NOT ERRORLEVEL 0 ECHO There was an error
Set /P dummy=Press Enter to End`
这是我的输出:
Please enter a value:hello
var = hello
C:\dummy420.csv
The process cannot access the file because it is being used by another process.
0
ECHO is off.
0
The filename, directory name, or volume label syntax is incorrect.
Press Enter to End
【问题讨论】:
-
只是为了添加一些东西,回显 ERRORLEVEL 的尝试总是返回 '0' 并且 IF 语句永远不会触发。
标签: batch-file error-handling cmd scripting errorlevel