web-dev-qa-db-ja.com

Windowsコマンドプロンプト:複数行の文字列パラメータを渡す方法

文字列パラメータを受け入れるプログラムがあります。プログラムと複数行の文字列パラメータを実行するバッチファイルを作成します。複数行の文字列の後に2番目のパラメータもあります。

C:\>MyProgram "This is a
multiline text" parameter2

これを実行すると、文字列の最初の行のみがコマンドに含まれ、後続の行と2番目のパラメーターは無視されます。複数行の文字列パラメータを渡す方法はありますか?

16
randacun

あなたの質問はに重複しています- Windows:コマンドプロンプトで複数行のコマンドを指定する方法は?

Windowsコマンドプロンプトでは、^を使用してコマンドラインの次の文字をエスケープします。

たとえば、(More?はプロンプトです):

C:\>cd "c:\Program Files" ^
More? "\Common Files"

C:\>MyProgram "This is a " ^  
More? "multiline text" parameter2
10
Dor Cohen

^の出力を変数として保存できます

set br= ^
<</br (newline)>>
<</br>>

例:

@echo off
setlocal enableExtensions enableDelayedExpansion
rem cd /D "%~dp0"
set br= ^


rem br, can't be saved to a var. by using %..%;


set "t=t1!br!t2!br!t3"

for /f "usebackq tokens=* delims=" %%q in ('!t!') do (
    echo %%q
)


:scIn
rem endlocal
pause
rem exit /b

;出力:

t1
t2
t3
Press any key to continue . . .
0
ilias