Why are these DOS Variables Empty? (e.g. %DATE%, %ERRORLEVEL%)

故事扮演 提交于 2019-12-13 01:47:55

问题


I am using Windows XP SP3.

If I open a Command Prompt window, and type

ECHO %DATE%

I get:

14-08-2018

like I should.

But If I exit Windows and boot my computer from a bootable USB Flash Drive that has DOS
(real DOS, not the command prompt inside Windows),
and enter the same command,
then %DATE% seems to be empty.

The command

ECHO %DATE%

replies

ECHO is On

Because it thinks that I just wrote ECHO,
since the value returned from %DATE% is "".

I tried it with 2 different DOS Versions..
Win98's DOS, and WinME's DOS.
(2 different USB Flash Drives)

Does anyone know why I cannot get the Date in real DOS,
while I can successfully get it when I am in Windows' command prompt?


回答1:


%ERRORLEVEL% is not a variable in DOS

%ERRORLEVEL%

In COMMAND.COM of DR-DOS 7.02 and higher, this pseudo-variable returns the last error level returned by an external program or the RETURN command, f.e. "0".."255". See also the identically named pseudo-variable %ERRORLEVEL% under Windows and the IF ERRORLEVEL conditional command.

https://en.wikipedia.org/wiki/Environment_variable#DOS

As you can see, it only exists in DR-DOS 7.02 onwards and Windows. DR-DOS also has %ERRORLVL%

OTOH %DATE% only exists on Windows

%DATE%

This pseudo-variable expands to the current date. The date is displayed according to the current user's date format preferences.

https://en.wikipedia.org/wiki/Environment_variable#Windows

They're new features of cmd.exe which requires command extension to be enabled

If Command Extensions are disabled, the following dynamic variables will be not accessible:

%CD% %DATE% %TIME% %RANDOM% %ERRORLEVEL% %CMDEXTVERSION% %CMDCMDLINE% %HIGHESTNUMANODENUMBER%

https://ss64.com/nt/syntax-variables.html

Therefore if you turn off command extension for DOS compatibility you'll also lose those variables on Windows cmd.exe



来源:https://stackoverflow.com/questions/51841636/why-are-these-dos-variables-empty-e-g-date-errorlevel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!