CMD这个命令的用途是什么:dir> NUL

时间:2017-06-02 06:49:57

标签: batch-file cmd

我正在分析一个以前在这里工作的工人的代码,他使用了很多这个命令:

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

1 个答案:

答案 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,错误级别是"特殊"报告系统状态的变量 - 如果设置它,则创建一个实际变量,然后拒绝报告未来命令中的实际错误级别。