如何将变量从VBScript传递到批处理?

时间:2016-11-26 23:07:12

标签: batch-file vbscript

我正在尝试将参数从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

1 个答案:

答案 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。代字号从参数中删除外部双引号。