読者です 読者をやめる 読者になる 読者になる

バッチファイルで長い1行の処理を改行を入れて複数行に分けて書きたい

DOSbatch

バッチファイルで1行の処理が長〜いと読みにくいので、複数の行に分けて書きたいこともある。
C言語におけるマクロでの「\」やVBの「_」と同じようなことをしたい。



バッチファイルで1行が長〜い処理というのもあまりないかもしないが、Javaでオプションやら
クラスパスやら設定すると非常に長くなる。
以下のgroovyの起動バッチのように環境変数に追加していき、最後で実行するのが一般的だろう。

set JAVA_OPTS=%JAVA_OPTS% -Dgroovy.starter.conf="%STARTER_CONF%"
set JAVA_OPTS=%JAVA_OPTS% -Dscript.name="%GROOVY_SCRIPT_NAME%"

if exist "%USERPROFILE%/.groovy/postinit.bat" call "%USERPROFILE%/.groovy/postinit.bat"

@rem Execute Groovy
"%JAVA_EXE%" %JAVA_OPTS% -classpath "%STARTER_CLASSPATH%" %STARTER_MAIN_CLASS% --main %CLASS% --conf "%STARTER_CONF%" --classpath "%CP%" %CMD_LINE_ARGS%


もし、これを1行で書くとすると以下のように非常に長くなる。

"C:\usr\opt\java\jdk1.6.0_12\bin\java.exe" -Xmx128m -Dprogram.name="" -Dgroovy.home="C:\usr\opt\groovy" -Dtools.jar="C:\usr\opt\java\jdk1.6.0_12\lib\tools.jar" -Dgroovy.starter.conf="C:\usr\opt\groovy\conf\groovy-starter.conf" -Dscript.name="" -classpath "C:\usr\opt\groovy\lib\groovy-1.6.5.jar" org.codehaus.groovy.tools.GroovyStarter --main org.codehaus.groovy.tools.shell.Main --conf "C:\usr\opt\groovy\conf\groovy-starter.conf" --classpath ".;C:\usr\opt\java\jre6\lib\ext\QTJava.zip;."


これを改行を入れて複数の行に分けるには「^」を最後に付ける。

"C:\usr\opt\java\jdk1.6.0_12\bin\java.exe" ^
-Xmx128m ^
-Dprogram.name="" ^
-Dgroovy.home="C:\usr\opt\groovy" ^
-Dtools.jar="C:\usr\opt\java\jdk1.6.0_12\lib\tools.jar" ^
-Dgroovy.starter.conf="C:\usr\opt\groovy\conf\groovy-starter.conf" ^
-Dscript.name="" ^
-classpath "C:\usr\opt\groovy\lib\groovy-1.6.5.jar" ^
org.codehaus.groovy.tools.GroovyStarter ^
--main org.codehaus.groovy.tools.shell.Main ^
--conf "C:\usr\opt\groovy\conf\groovy-starter.conf" ^
--classpath ".;C:\usr\opt\java\jre6\lib\ext\QTJava.zip;." 

なぜかと言うと、バッチファイルでのエスケープ文字は「^」だから。


しかし、「^」 なんてなかなか試さんし、思いつかんよ。
コマンドのヘルプやコマンドリファレンスにも載ってなさそうだ。
知ってる人にでも教えてもらわないとなかなかたどり着けなさそう。



Windows コマンドプロンプト ポケットリファレンス
4774149543