下面的代碼在Win XP返回不同的錯誤級別和Win 7:「組VAR =」 的工作方式不同在XP和Windows 7
set "QQQ="
echo ERRORLEVEL=%ERRORLEVEL%
XP
>ERRORLEVEL=1
的Windows 7
>ERRORLEVEL=0
爲什麼?
下面的代碼在Win XP返回不同的錯誤級別和Win 7:「組VAR =」 的工作方式不同在XP和Windows 7
set "QQQ="
echo ERRORLEVEL=%ERRORLEVEL%
XP
>ERRORLEVEL=1
的Windows 7
>ERRORLEVEL=0
爲什麼?
在Windows XP中這不起作用, 因爲SET命令本身會設置錯誤級別(通常爲1)! 因爲QQQ的值沒有被定義 但在視窗7發生的事情是SET值設置QQQ具有空,因此不限定的 ERRORLEVEL = 0 例如在Windows 7
set "QQQ"
echo %ERRORLEVEL%
pause
環境變量QQQ// ERRORLEVEL = 1 和 例如在Windows 7
set "QQQ=" :: sets QQQ as null
echo %ERRORLEVEL%
pause
環境變量QQQ未定義// ERRORLEVEL = 0
XP似乎在這裏更有意義,因爲它將errorlevel設置爲1,但前提是QQQ是未定義的變量。
WIN7有兩種不同的方法!
set
不改變ERRORLEVEL,如果代碼是.BAT
文件
set
始終將錯誤級別爲0中,如果代碼是.CMD
文件
爲什麼裏面?
沒有人知道。你可以問微軟,但我想這只是一個意想不到的行爲。
在我的Win7 set命令不會將cmd或bat文件中的ERRORLEVEL更改爲1。 –
@Vladimir Bezugliy正如我所說的,在Win7上,errorlevel根本沒有改變(在批處理文件中),或者它總是設置爲0(在cmd文件中),但Win7從未將其設置爲1 – jeb
但是爲什麼在Win 7中set命令的行爲改變了? –
對不起,不知道爲什麼:)他們作爲;未分配的值設置爲空值 – cc4re
@ cc4re我看不到空值和未定義變量之間的任何差異 – jeb