用带参数的蝙蝠调用蝙蝠

时间:2013-04-09 11:30:37

标签: parameters vbscript batch-file

     main.bat contains:
     cscript treat.vbs /a:"the name of file"  

REm:文件名包含许多空格

     treat.vbs contains:
     dim param: param_input=Wscript.Arguments.Named("a")
     msgbox param_input
     shell.run "second.bat" param_input & " " & ""myfile.out""

     second.bat contains:(just for purpose of test)
     echo %1
     echo %2

运行main.bat时,msgbox显示一个包含所有名称文件的弹出窗口(包括文件名中包含的所有空格,而echo消息echo%1显示文件名称减少。

我该如何解决这个问题呢?

2 个答案:

答案 0 :(得分:2)

您的问题似乎是“使用参数从 vbs 调用蝙蝠”

你暗淡param但使用param_input

dim param: param_input=Wscript.Arguments.Named("a")

您将cmd连接到.run是错误的:

>> s = "second.bat" param_input & " " & ""myfile.out""
>>
Error Number:       1025
Error Description:  Expected end of statement

正确的一种方法是使用并替换'with'以避免VBScript在连接中逃脱:

>> param_input = "the name of file"
>> s = Replace("'second.bat' '" & param_input & "' 'myfile.out'", "'", """")
>> WScript.Echo s
>>
"second.bat" "the name of file" "myfile.out"

有关讨论/其他方式,请参阅How-To-Quote-Like-A-Pro

答案 1 :(得分:1)

您需要将参数括在双引号中,以使空格成为参数的一部分。你需要通过在VBS中将它们加倍来逃避这些双引号。

shell.run "second.bat """ & param_input & """ ""myfile.out"""

我无法包含整个示例,因为您的代码甚至无法编译。

另请参阅问题Adding quotes to a string in VBScript