Vbscript MsgBox-Newline aus dem Stapelargument

743
Riccardo La Marca

test.vbs:

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

funktioniert.

prova.bat:

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

Message.vbs:

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

funktioniert nicht (warum?).

prova.bat (ohne Newline)

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

funktioniert.

0
Die Befehlszeile, die übergeben wird, lautet: "WScript // Nologo Message.vbs" Hallo "" aufgrund der "Dies ist im Process Explorer zu sehen - http://imgur.com/a/7I7MA HelpingHand vor 6 Jahren 0
Großartig! Sie konnten posten. Aber was genau ist deine Frage? LPChip vor 6 Jahren 1
Was möchtest du machen? Soll ein Leerzeichen im ersten Argument durch einen Zeilenumbruch ersetzt werden? davidmneedham vor 6 Jahren 0
Etwaige kaufmännische Und-Zeichen (&) müssen mit einem Caret-Zeichen (^ &) getrennt werden. Ich empfehle außerdem, `Replace (wscript.arguments (0)," \ n ", vbNewLine)` in Ihrem VBScript zu verwenden und Ihre .bat-Datei in etwas wie 'WScript // Nologo Message.vbs "Hello \ nWorld" 0 "zu ändern davidmneedham vor 6 Jahren 1

2 Antworten auf die Frage

1
Yorik

In einem VBS-Skript &bedeutet das Et-Zeichen "Verketten" (Join) und vbNewLineist eine definierte Konstante.

In einer Batch-Datei bedeutet das kaufmännische Und-Zeichen "Ausführen, nachdem der vorherige Befehl abgeschlossen ist" und vbNewLineist undefiniert.

Kontext ist hier alles und Sie müssen herausfinden, was Sie passieren und was die Operatoren und Variablen in jedem Kontext bedeuten. Einer der obigen Kommentare bietet eine praktikable Möglichkeit, die Eingabe aus einem Kontext zu übernehmen und in den anderen Kontext zu konvertieren.

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

Ist perfekt für Universal Message Box mit Batch! ;-)
Mit Rückgabewert in% errorlevel% bei Wahl.
Danke an alle!