Vbscript MsgBox バッチ引数からの改行

Vbscript MsgBox バッチ引数からの改行

テスト.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未定義です。

ここではコンテキストがすべてであり、渡されるものが何であるか、各コンテキストの演算子と変数が何を意味するかを理解する必要があります。上記のコメントの 1 つは、1 つのコンテキストから入力を取得して、それを別のコンテキストに変換する実行可能な方法を示しています。

答え2

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

バッチ付きのユニバーサル メッセージ ボックスに最適です! ;-)
選択した場合、%errorlevel% の戻り値を使用します。
ありがとうございます!

関連情報