Vbscript 为什么';t WScript.Shell.ExpandEnvironmentString是否与%CD%一起工作?

Vbscript 为什么';t WScript.Shell.ExpandEnvironmentString是否与%CD%一起工作?,vbscript,environment-variables,wsh,Vbscript,Environment Variables,Wsh,在命令行中,您可以使用echo%CD%输出当前目录,如下所示: Windows脚本主机提供了如下功能: Dim objWshShell : Set objWshShell = CreateObject("Wscript.Shell") MsgBox objWshShell.ExpandEnvironmentStrings("%WINDIR%") 但是,它不适用于%CD%。它只返回相同的值,%CD%: Dim objWshShell : Set objWshShell = CreateObj

在命令行中,您可以使用
echo%CD%
输出当前目录,如下所示:

Windows脚本主机提供了如下功能:

Dim objWshShell : Set objWshShell = CreateObject("Wscript.Shell")
MsgBox objWshShell.ExpandEnvironmentStrings("%WINDIR%")

但是,它不适用于
%CD%
。它只返回相同的值,
%CD%

Dim objWshShell : Set objWshShell = CreateObject("Wscript.Shell")
MsgBox objWshShell.ExpandEnvironmentStrings("%CD%")


为什么这样不行?我知道还有其他方法可以获取当前目录;这只是一种好奇

变量
%CD%
是CMD内置的自动变量,而不是像
%PATH%
%USERNAME%
那样的环境变量。它只能在CMD中使用,例如

cmd /c echo %CD%
变量
%TIME%
%DATE%
%ERRORLEVEL%
也是如此

如果希望在VBScript中显示当前工作目录,则需要使用
WshShell
对象的属性

Set sh = CreateObject("WScript.Shell")
WScript.Echo sh.CurrentDirectory
或目录

Set fso = CreateObject("Scripting.FileSystemObject")
WScript.Echo fso.GetAbsolutePathName(".")