
test.vbs:
wscript.quit MsgBox ("Hello"&vbNewLine&"World",0)
работает.
prova.bat:
WScript //Nologo Message.vbs "Hello"&vbNewLine&"World" 0
Сообщение.vbs:
wscript.quit MsgBox (wscript.arguments(0),wscript.arguments(1))
не работает (почему?).
prova.bat (без перевода строки)
WScript //Nologo Message.vbs "Hello World" 0
работает.
решение1
В скрипте VBS амперсанд &
означает «конкатенацию» (объединение) и vbNewLine
является определенной константой.
В пакетном файле амперсанд означает «выполнить это после завершения предыдущей команды» и vbNewLine
не определен.
Контекст здесь — это все, и вам нужно выяснить, что именно вы передаете, и что означают операторы и переменные в каждом контексте. Один из комментариев выше предлагает жизнеспособный способ взять входные данные из одного контекста и преобразовать их в другой контекст.
решение2
Dim Messaggio
Messaggio = Replace(wscript.arguments(0),"\n",vbNewLine)
wscript.quit MsgBox(Messaggio,wscript.arguments(1))
Идеально подходит для Universal Message Box с пакетом! ;-)
С возвращаемым значением в %errorlevel% в случае выбора.
Спасибо всем!