Nova linha Vbscript MsgBox do argumento em lote

Nova linha Vbscript MsgBox do argumento em lote

teste.vbs:

wscript.quit MsgBox ("Hello"&vbNewLine&"World",0)

funciona.

prova.bat:

WScript //Nologo Message.vbs "Hello"&vbNewLine&"World" 0

Mensagem.vbs:

wscript.quit MsgBox (wscript.arguments(0),wscript.arguments(1))

não funciona (por quê?).

prova.bat (sem nova linha)

WScript //Nologo Message.vbs "Hello World" 0

funciona.

Responder1

Em um script VBS, o e comercial &significa "concatenar" (juntar) e vbNewLineé uma constante definida.

Em um arquivo em lote, o "e" comercial significa "executar isto após a conclusão do comando anterior" e vbNewLineé indefinido.

Contexto é tudo aqui, e você precisa descobrir o que está passando e o que significam os operadores e variáveis ​​em cada contexto. Um dos comentários acima oferece uma maneira viável de pegar a entrada de um contexto e convertê-la para outro contexto.

Responder2

Dim Messaggio
Messaggio = Replace(wscript.arguments(0),"\n",vbNewLine)
wscript.quit MsgBox(Messaggio,wscript.arguments(1))

É perfeito para caixa de mensagens universal com lote! ;-)
Com valor de retorno em% errorlevel% em caso de escolha.
Obrigado de todo!

informação relacionada