为什么WScript.Shell.ExpandEnvironmentStrings不能与%CD%一起使用?

ror*_*.ap 3 vbscript wsh environment-variables

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

在此输入图像描述

Windows Scripting Host提供ExpandEnvironmentalStrings可以像这样使用方法:

Dim objWshShell : Set objWshShell = CreateObject("Wscript.Shell")
MsgBox objWshShell.ExpandEnvironmentStrings("%WINDIR%")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,它无法使用%CD%.它只返回相同的值,%CD%:

Dim objWshShell : Set objWshShell = CreateObject("Wscript.Shell")
MsgBox objWshShell.ExpandEnvironmentStrings("%CD%")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

Ans*_*ers 8

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

cmd /c echo %CD%
Run Code Online (Sandbox Code Playgroud)

变量,和%TIME%,同样如此.%DATE%%ERRORLEVEL%

如果要在VBScript中使用当前工作目录,则需要使用CurrentDirectoryWshShell对象的属性

Set sh = CreateObject("WScript.Shell")
WScript.Echo sh.CurrentDirectory
Run Code Online (Sandbox Code Playgroud)

或者展开目录的路径.:

Set fso = CreateObject("Scripting.FileSystemObject")
WScript.Echo fso.GetAbsolutePathName(".")
Run Code Online (Sandbox Code Playgroud)