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显示文件名称减少。
我该如何解决这个问题呢?
答案 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"""
我无法包含整个示例,因为您的代码甚至无法编译。