为什么 WScript.Shell.ExpandEnvironmentStrings 不能与 %CD% 一起使用?
Why doesn't WScript.Shell.ExpandEnvironmentStrings work with %CD%?
在命令行中,您可以使用 echo %CD%
输出当前目录,如下所示:
Windows Scripting Host 提供了the ExpandEnvironmentalStrings
method,可以这样使用:
Dim objWshShell : Set objWshShell = CreateObject("Wscript.Shell")
MsgBox objWshShell.ExpandEnvironmentStrings("%WINDIR%")
但是,它不适用于 %CD%
。它只是 returns 相同的值,%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
对象的 CurrentDirectory
属性
Set sh = CreateObject("WScript.Shell")
WScript.Echo sh.CurrentDirectory
目录.
的
Set fso = CreateObject("Scripting.FileSystemObject")
WScript.Echo fso.GetAbsolutePathName(".")
在命令行中,您可以使用 echo %CD%
输出当前目录,如下所示:
Windows Scripting Host 提供了the ExpandEnvironmentalStrings
method,可以这样使用:
Dim objWshShell : Set objWshShell = CreateObject("Wscript.Shell")
MsgBox objWshShell.ExpandEnvironmentStrings("%WINDIR%")
但是,它不适用于 %CD%
。它只是 returns 相同的值,%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
对象的 CurrentDirectory
属性
Set sh = CreateObject("WScript.Shell")
WScript.Echo sh.CurrentDirectory
目录.
的
Set fso = CreateObject("Scripting.FileSystemObject")
WScript.Echo fso.GetAbsolutePathName(".")