1
     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 %1 显示文件名被删减。

请问我该怎么做才能解决这个问题?

4

2 回答 2

2

您的问题似乎是“从带有参数的vbs调用 bat”

你变暗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

一种正确的方法是使用 ' 并将其替换为 " 以避免 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

于 2013-04-09T11:48:20.373 回答
1

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

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

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

另请参阅在 VBScript 中将引号添加到字符串的问题。

于 2013-04-09T11:52:17.620 回答