我认为你需要添加一个:
CD = """" & CD & """"
当由批处理文件解释时,这将有助于将字符串解释为一个整体。 (您将传递"C:\Program Files\" 而不是C:\Program Files\,这将被解释为a.bat "C:\Program" "Files\")
例如:
'Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
CD = """" & fso.GetAbsolutePathName(".") & """"
'Dim WshShell
'Set WshShell=Wscript.CreateObject("Wscript.shell")
'WshShell.run "a.bat " & CD
或:
'Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
'CD = fso.GetAbsolutePathName(".")
CD = """" & CD & """"
'Dim WshShell
'Set WshShell=Wscript.CreateObject("Wscript.shell")
'WshShell.run "a.bat " & CD
或者正如 Ekkehard.Horner 和 MC ND 所指出的那样:
'Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
'CD = fso.GetAbsolutePathName(".")
'Dim WshShell
'Set WshShell=Wscript.CreateObject("Wscript.shell")
WshShell.run "a.bat " & """" & CD & """"
正如 MC ND 所使用的,如果您认为它更易于阅读,您可以将 """" 替换为 char(34)。
按照 Ekkehard.Horner 的建议,为了进一步提高可读性,您可以创建一个函数:
Function qq(s)
qq = """" & s & """"
End Function
并用作:
'Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
'CD = fso.GetAbsolutePathName(".")
'Dim WshShell
'Set WshShell=Wscript.CreateObject("Wscript.shell")
WshShell.run "a.bat " & qq(CD)