我正在分析一个以前在这里工作的工人的代码,他使用了很多这个命令:
dir >NUL
我知道这会将输出重定向到“Nul设备”并且CMD.EXE将其解释为dir 1> Nul,但我没有看到它的目的。他写道: 重置错误级别。
示例:
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set _Year=%%c&set _Month=%%a&set _Day=%%b)
set _Day=%_Day: =%
set _TODAY_FORMATTED=%_Year%%_Month%%_Day%
:: Self Check
:: Reset errorlevel
dir >NUL
set /a _TEST=%_TODAY_FORMATTED%-1
set _rc=%errorlevel%
:: Reset errorlevel
dir >NUL
if %_rc% NEQ 0 call :SELFCHECKERROR& goto end
答案 0 :(得分:1)
它完全符合所说的: - )
C:\pax> dir x:
The device is not ready.
C:\pax> echo %errorlevel%
1
C:\pax> dir >nul:
C:\pax> echo %errorlevel%
0
错误级别用于将可执行文件中的错误(尽管不是每个可执行文件都设置错误级别)传递回命令shell。
执行一个已知成功的程序是一种安全的方法来重置它(a)虽然dir
不是一个很好的选择,因为它可能需要一些时间才能完成所有操作当前目录中的文件。像ver >nul:
这样的命令可能更好。
(a) 不认为你可以简单地做set errorlevel=0
,错误级别是"特殊"报告系统状态的变量 - 如果设置它,则创建一个实际变量,然后拒绝报告未来命令中的实际错误级别。