Передача аргументов (содержащих пробелы) в VBS через шелк
Я пишу, чтобы вызвать VBScript из Silk bdh и передаю аргументы из Silk. Моя первая проблема - более 1 аргумента (всего 4 аргумента). Моя вторая проблема - эти аргументы содержат пробелы.
Ниже приведена программа:
sCmdLine := "cscript.exe";
//sParms := "C:\\QK\\test1_old.vbs \" \"" +string(error_counter)+"\" \"" +error_timer ;
sParms := "C:\\QK\\test1.vbs \" 2\string(error_counter)+
error_timer + ERROR_DETAILS +error_time;
hProcessId := ProcessInitialize(sCmdLine, PROCESS_PIPED, sParms,"C:\\WINDOWS\\System32\\");
ProcessSetOutputBuffer(hProcessId, reportedTo, STRING_COMPLETE);
ProcessStart(hProcessId);
StrSearchDelimited(reportedTo,STRING_COMPLETE,reportedTo,"reserved.",1,NULL,1,STR_SEARCH_FIRST);
print("reportedTo*****"+reportedTo);
Программа VBS это:
dim captcha
errorcounter=Wscript.Arguments(0)
errortimer=Wscript.Arguments(1)
errordetails=Wscript.Arguments(2)
errortime=Wscript.Arguments(3)
text= "Level : " & errorcounter
text= text & vbNewline
text = text & "Page : " & errortimer
text= text & vbNewline
text = text & "Error : " & errordetails
text= text & vbNewline
text = text & "Error Time : " & errortime
reportedto=inputbox( text,"ReportedTo")
1 ответ
Вы всегда указываете параметры с пробелами. Это базовая Windows и была представлена 19 лет назад. За исключением chdir и notepad, все остальные команды и код, который анализирует командные строки, ожидают, что вещи, содержащие пробелы, будут заключены в кавычки.
dir "c:\some folder\some file.txt" /a
В VBS мы написали бы приведенную выше строку для выполнения как (chr(34) является символом кавычки)
"dir " & chr(34) & "c:\some folder\some file.txt" & chr(34) & " /a"