“set var =”在XP和Windows 7上的工作方式不同

时间:2012-09-17 07:45:15

标签: batch-file

以下代码在Win XP和Win 7上返回不同的ERRORLEVEL:

set "QQQ="
echo ERRORLEVEL=%ERRORLEVEL%

XP

>ERRORLEVEL=1

Windows 7

>ERRORLEVEL=0

为什么?

2 个答案:

答案 0 :(得分:1)

XP似乎在这里更有意义,因为它将errorlevel设置为1,但前提是QQQ是未定义的变量。

WIN7有两种不同的方式!
如果代码位于set文件中,则.BAT不会更改错误级别 如果代码在set文件中,则.CMD将errorlevel设置为0

为什么?
没人知道。你可以问微软,但我认为这只是一种意想不到的行为。

答案 1 :(得分:0)

在Windows XP中,这不起作用, 因为SET命令本身会设置一个错误级别(通常为1)! 因为QQQ的价值没有定义 但是在Windows 7中会发生什么,SET值设置QQQ为null,因此 ERRORLEVEL = 0 例如IN WINDOWS 7

set "QQQ"
echo %ERRORLEVEL%
pause

未定义环境变量QQQ // ERRORLEVEL = 1 和 例如IN WINDOWS 7

set "QQQ="   :: sets QQQ as null
echo %ERRORLEVEL%
pause

环境变量QQQ未定义// ERRORLEVEL = 0