Batch file for MXMLC

Flex 2 Builderの試用期限も過ぎていたので、MXMLC*1用のバッチファイルを書いてみたり。

実行PATHを通してあればどこでもFlexできるかと。

mxmlc_.bat
compile only.
mxmlc_launch.bat
compile and launch.
mxmlc_debug.bat
compile and launch and show log.

利点

  • Flex 2 SDKとこのバッチファイルさえあればFlex 2を利用することができる。
    Flex 2 SDKは無料だし、Flex 2やActionScript3.0を少し触れてみたいという人向けの導入に向いている。
  • 日本語Windowsのデスクトップでちょこちょこっとした作業を済ませられる。
    MXMLCコマンドラインで実行した際、カレントディレクトリなどのファイルパスに日本語が含まれていると処理が進まない時があるが、バッチファイルでは何故か実行することができる。*2

欠点

問題点

mxmlc_debug.batではflashlog.txtをtypeさせていますが、traceによってログに書かれた日本語などのマルチバイトの文字コードが、コマンドプロンプト上では文字化けしてしまいます。*3
ログは適当なエディタで開けば日本語でも読めるので構わないのですが、コマンドプロンプトだけで実現できたらそれはそれで便利だなと思っていたのでちょっと残念です。*4

日本語についてのメモ

traceで日本語を利用する場合、日本語が含まれる.asや.mxml文字コードUTF-8にしておくべきです。
それか -compiler.actionscript-file-encoding Shift-JIS とかオプションつければOKだったかな。EUC-JPもオプション指定でOKだったと思う。
間違ったオプションをつけてもBOMのお陰なのかUTF-8の誤読はしないみたい。

mxmlc_.bat

@echo off
mxmlc %1

if errorlevel 2 goto OTHERERROR
if errorlevel 1 goto ERROR

echo.
echo SUCCESS
goto END

:OTHERERROR
echo OTHERERROR
echo.
pause
goto END

:ERROR
echo ERROR
echo.
pause

:END

mxmlc_launch.bat

@echo off
mxmlc %1

if errorlevel 2 goto OTHERERROR
if errorlevel 1 goto ERROR

echo.
echo SUCCESS
echo.
echo LAUNCH : "%~n1.swf"
"%~dpn1.swf"
goto END

:OTHERERROR
echo OTHERERROR
echo.
pause
goto END

:ERROR
echo ERROR
echo.
pause

:END

mxmlc_debug.bat

@echo off
mxmlc %1

if errorlevel 2 goto OTHERERROR
if errorlevel 1 goto ERROR

echo.
echo SUCCESS
echo.
echo LAUNCH : "%~n1.swf"
"%~dpn1.swf"
echo.
echo TYPE "%USERPROFILE%\flashlog.txt"
echo.
type "%USERPROFILE%\flashlog.txt"
echo.
pause
goto END

:OTHERERROR
echo OTHERERROR
echo.
pause
goto END

:ERROR
echo ERROR
echo.
pause

:END

*1:Flex2.0 SDKコンパイラMacromedia-XML Compilerの略かな。

*2:カレントディレクトリのファイルパスに「デスクトップ」が入っていると怪しい。コンパイル対象へのファイルパスに「デスクトップ」が入っている分にはsafe。カレントディレクトリのUSERPROFILE部分に漢字が入っていてもsafe。

*3:Windows XPの内部文字コードUnicodeで、コマンドプロンプトもそれを利用しているのだけれども、Stand-Alone Flash PlayerはログをUTF-8で書くからっぽい。

*4:Cygwinとか利用するとか、Meadowとか使えば便利なんだろうけれど、それでは手間がちょっと多いかな。