Vbscript MsgBox новая строка из аргумента пакета

Vbscript MsgBox новая строка из аргумента пакета

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% в случае выбора.
Спасибо всем!

Связанный контент