2016-12-16 8 views
3

В командной строке вы можете вывести текущий каталог с помощью echo %CD%, как это так:Почему WScript.Shell.ExpandEnvironmentStrings не работает с% CD%?

enter image description here

окон Scripting Host обеспечивает the ExpandEnvironmentalStrings method, которые могут быть использованы, как это:

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

enter image description here

Однако он не работает с %CD%. Он просто возвращает то же значение, %CD%:

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

enter image description here

Почему не работает? Я знаю, что есть другие способы получить текущий каталог; это просто любопытство.

ответ

8

Переменная %CD% является автоматической переменной CMD, а не переменной среды, например %PATH% или %USERNAME%. Он может использоваться только в CMD, например.

cmd /c echo %CD% 

То же самое относится и к переменным %TIME%, %DATE% и %ERRORLEVEL%.

Если вы хотите текущую рабочую директорию в VBScript необходимо использовать CurrentDirectory свойство WshShell объекта

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

или expand the path каталога .:

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