我正在尝试将参数从VBScript传递到批处理。
这是我的VBScript:
Var1 = "foo"
Var2 = "bar"
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "T.bat "& Var1 & Var2
这是我的批处理文件:
@echo off
echo %1
echo %2
pause>nul
答案 0 :(得分:2)
两个参数之间需要一个空格,否则批处理文件只会看到一个参数。
WshShell.Run "T.bat "& Var1 & Var2
变为
WshShell.Run "T.bat foobar"
为了避免无意中连接,请改变:
WshShell.Run "T.bat "& Var1 & Var2
进入这个:
WshShell.Run "T.bat "& Var1 & " " & Var2
或(更好)这个:
WshShell.Run "T.bat """& Var1 & """ """ & Var2 & """"
附加的双引号用于处理参数中的空格。您可以使用引用函数使其更具可读性:
Function qq(str)
qq = """" & str & """"
End Function
WshShell.Run "T.bat "& qq(Var1) & " " & qq(Var2)
作为旁注:在批处理文件中,您可能希望使用%~1
和%~2
,而不仅仅是%1
和%2
。代字号从参数中删除外部双引号。