使用%windir%位置作为变量时,Windows无法找到指定的路径。另外,有人知道64位计算机是否有系统3s文件夹?我知道变量有效,因为我在消息框中使用过它。这是我的代码,请尽可能帮忙。
set shell = WScript.CreateObject("WScript.Shell")
windowsdir = shell.ExpandEnvironmentStrings("%windir%")
MsgBox(windowsdir)
Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run("""windowsdir & \System32\dvdplay.exe""")
Set objShell = Nothing
抱歉,我正在尝试使用相同的方法创建文件夹,现在我收到“错误的文件名或编号”错误。如果可以,请帮忙。
dim filesys, newfolder, newfolderpath
Dim oShell : Set oShell = CreateObject("WScript.Shell")
Dim sWinDir : sWinDir = oShell.ExpandEnvironmentStrings("%windir%")
sCmd = """" & sWinDir & "\System32\test"""
WScript.Echo 3, sCmd, "'concatenation' solution"
newfolderpath = """"& sCmd& ""
set filesys=CreateObject("Scripting.FileSystemObject")
If Not filesys.FolderExists(newfolderpath) Then
Set newfolder = filesys.CreateFolder(newfolderpath)
End If
答案 0 :(得分:1)
使用.Run或.Exec时,您应该使用临时变量来存储和显示命令(至少在“它工作”之前):
Option Explicit
Dim oShell : Set oShell = CreateObject("WScript.Shell")
WScript.Echo 0, oShell.ExpandEnvironmentStrings("%windir%")
Dim sCmd
sCmd = """windowsdir & \System32\dvdplay.exe"""
WScript.Echo 1, sCmd, "no variable interpolation in VBScript"
sCmd = oShell.ExpandEnvironmentStrings("""%windir%\System32\dvdplay.exe""")
WScript.Echo 2, sCmd, "'no concatenation' solution"
Dim sWinDir : sWinDir = oShell.ExpandEnvironmentStrings("%windir%")
sCmd = """" & sWinDir & "\System32\dvdplay.exe"""
WScript.Echo 3, sCmd, "'concatenation' solution"
输出:
cscript 19367777.vbs
0 C:\WINDOWS
1 "windowsdir & \System32\dvdplay.exe" no variable interpolation in VBScript
2 "C:\WINDOWS\System32\dvdplay.exe" 'no concatenation' solution
3 "C:\WINDOWS\System32\dvdplay.exe" 'concatenation' solution
由于VBScript没有将变量内容拼接成字符串文字,因此您必须连接部分(在我看来是第二个最佳解决方案)或将.ExpandEnvironmentStrings()应用于包含%windir%
的命令。
答案 1 :(得分:0)
在32位窗口上,你只有System32 ..
在64位窗口上,你有:
我知道,这令人困惑。
在任何一种架构上,%WINDIR%
应该是相同的。如果您只是在64位系统上运行脚本,那么只需更换System32 for SysWOW64就可以轻而易举。
在32和64上运行脚本时,可能需要注意的是:“哪个脚本主机与.vbs文件相关联?”通常如果你只需双击64位的VBS,解释器将是:C:\Windows\System32\WScript.exe
(即64位主机),这意味着,例如%PROGRAMFILES%
扩展为C:\Program Files
。在c:\Windows\SysWOW64\WScript.exe
(32位)中展开相同的变量,您将获得C:\Program Files (x86)
很长一段时间我都有框架代码,允许脚本在32位主机中“重新运行”,只是为了交叉兼容。
答案 2 :(得分:0)
我注意到有时在更新Visual Studio或SQL Server时,Path
有点太满,或者%systemroot%
条目因为新的而被“推下”条目。
如果您的系统找不到%windir%
,请查看您的系统Path
,并确保首先少数条目:
%SystemRoot%;%SystemRoot%\system32; ...etc
然后确保系统变量windir
设置为C:\Windows
您可能需要重新启动。这对我有用。