2013-04-09 190 views
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顯示一個彈出的所有文件名(包括所有的空格包含文件的文件名內,而回聲消息回聲%1表示文件的名稱削減。

我該怎麼做才能解決辦法是,好嗎?

回答

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 

一種方式,用「替換爲」以避免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

您需要將參數括在雙引號中,以使空格成爲參數的一部分。你需要通過在VBS中加倍他們來避免這些雙引號。

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

我不能包含整個例子,因爲你的代碼甚至沒有編譯。

另請參閱問題Adding quotes to a string in VBScript

+0

很好。也感謝您的明確信息 – new 2013-04-09 13:47:50

+0

我很高興能爲您提供幫助。你能接受答案嗎? – 2013-04-09 13:56:35