@title bmx2mp3.bat (bmx2wav 1.2.0-) @echo off && setlocal EnableDelayedExpansion :: 2010/09/09 ファイル+フォルダの複数同時ドロップ, 譜面数カウンタ, エラー関係 :: ******************** config ******************** set BMX="C:\hoge\bmx2wav" set OUT="E:\bmx2output" set BMC="C:\Documents and Settings\UserName\SendTo" set INI="bmx2mp3.ini" :: ************************************************ :: 俺用アドバイス・以下の三点が同一というか対応している必要がある :: (1) この bat の config でのフォルダパス指定 :: (2) 専用 ini の出力テンプレートでのフォルダパス指定 :: (3) 実際のフォルダの名前 ←↑ このへんしょっちゅう忘れる注意 set DAT=%date:/=-% set DAN=%time:~0,8% :: ちゃんと走るかチェック開始 (融通きかなくなるのでこの部分は好みで削って)----- if not exist %BMX%\ ( echo %BMX% echo この bmx2wav 実行ファイルディレクトリは存在しないか、無効なパスです。 echo bmx2mp3.bat 内 *config* の set BMX="" 行を確認してください。 goto ending ) if not exist %OUT%\ ( echo %OUT% echo この MP3 出力専用ディレクトリは存在しないか、無効なパスです。 echo bmx2mp3.bat 内 *config* の set OUT="" 行を確認してください。 echo: echo ここには %INI% で設定した MP3 出力専用ディレクトリを指定します。 echo たとえば %INI% の出力テンプレートが echo: echo OutputTemplateSource=E:\bmx2output\[ %%#ARTIST# ] %%#TITLE#_%%J.wav echo: echo だったならば、bmx2mp3.bat 内 *config* は以下のようにします。 echo: echo set OUT="E:\bmx2output" goto ending ) if not exist %BMC%\ ( echo %BMC% echo このディレクトリは存在しないか、もしくは無効なパスです。 echo bmx2mp3.bat 内 *config* の set BMC="" 行を確認してください。 echo: echo :: ここに BMxCount.bat を置くとオマケ機能が発動するよ goto ending ) cd /d %BMX% if not exist bmx2wavc.exe ( echo %BMX% echo この実行ファイルディレクトリに bmx2wavc.exe が見つかりません。 goto ending ) if not exist %INI% ( echo %BMX% echo この実行ファイルディレクトリに echo MP3 変換専用の設定ファイル %INI% が見つかりません。 echo bmx2mp3.bat 内 *config* の set INI="" 行を確認してください。 echo: echo MP3 変換専用の設定ファイルそのものが存在しない場合は、 echo GUI 版 bmx2wav.exe の 詳細設定 - 出力タブ にて echo MP3 出力専用ディレクトリ %OUT% のパスを指定し、 echo その設定に任意の名前をつけて保存するか、またはコピーしてください。 echo: echo 以下は %INI% の記述例です。Use... と Remove... は必ず 1 にしてね echo CancelAtResounding=1 echo UseOutputTemplate=1 echo OutputTemplateSource=E:\bmx2output\[ %%#ARTIST# ] %%#TITLE#_%%J.wav echo RemoveCanNotUseCharAsFilePath=1 goto ending ) :: OutputTemplateSource と set OUT= の内容を比較してパスが同一か判定する案 :: めんど :: でもテストでしょっちゅう ini だけパス書き直すのを忘れる俺にはかなり必要 cd /d %OUT% :: aoTuV 使う場合は以下の 8 行消す if not exist lame.exe ( echo %OUT% echo この MP3 出力専用ディレクトリに lame.exe を置いてください。 echo エンコーダが存在しないため、バッチ処理を中止します。 echo: echo Lame 入手先 : http://www.rarewares.org/mp3-lame-bundle.php goto ending ) if exist *.wav ( echo %OUT% echo この MP3 出力専用ディレクトリから WAV ファイルを退避させてください。 echo 安全性の観点および変換エラー記録の都合上、バッチ処理を中止します。 goto ending ) :: ちゃんと走るかチェック終了------------------------------------------------- cd /d %BMX% bmx2wavc.exe -version echo: cd /d %BMC% if exist BMxCount.bat ( call BMxCount.bat %* echo 以上の譜面を一括変換します。 pause echo: ) cd /d %BMX% set /a CNT=0 set /a SUC=0 set /a ERR=0 :mainloop set FLD=%~1\ if .%1==. goto result if not exist "%FLD%" ( if /i "%~x1"==".bms" goto single if /i "%~x1"==".bme" goto single if /i "%~x1"==".bml" goto single if /i "%~x1"==".pms" goto single ) for /r %1 %%A in (*.bms *.bme *.bml *.pms) do ( set TMP=%%A set /a CNT=!CNT!+1 echo BMx no.!CNT! : bmx2wavc.exe -c %INI% "%%A" call :encode ) shift goto mainloop :: ファイルドロップ時は拡張子の大文字小文字が区別されたので仕方なく if /i で回す :result if !CNT! == 0 ( echo 拡張子 .bms .bme .bml .pms のファイルがないので終了します。 goto ending ) echo BMx : !CNT! echo MP3 : !SUC! / !CNT! echo ERR : !ERR! / !CNT! echo RUN : %DAT% %DAN% echo END : %date:/=-% %time:~0,8% cd /d %OUT% if !ERR!==0 ( (echo ^(%date:/=-% %time:~0,8%^) error No.!ERR! : PERFECT) >> bmxerror.txt 2>>&1 (echo --------------------------------------------------------------------------------) >> bmxerror.txt 2>>&1 ) else ( (echo --------------------------------------------------------------------------------) >> bmxerror.txt 2>>&1 ) goto ending :single set TMP=%1 set /a CNT=!CNT!+1 echo BMx no.!CNT! : bmx2wavc.exe -c %INI% "%~1" call :encode shift goto mainloop :ending cd /d %BMX% echo: endlocal pause :: 俺用コニメ殺し procterm conime.exe exit :: エンコーダとかオプションとか好みで設定してね---------------------------------------------- :: lame (CBR 192kbps) = lame -b 192 *.wav (-S:don't print progress report, VBR histograms) :: aoTuV (VBR 192kbps) = venc -q6 *.wav :encode cd /d %OUT% if exist "*.wav" ( echo WAV ファイルを MP3 フォーマットに変換しています。 ... lame.exe -b 192 -S "*.wav" del "*.wav" set /a SUC=!SUC!+1 echo ... 完了 ) else ( set /a ERR=!ERR!+1 (echo ^(%date:/=-% %time:~0,8%^) error No.!ERR! : !TMP!) >> bmxerror.txt 2>>&1 echo この譜面を %OUT:"=%\bmxerror.txt に記録しました。 ) cd /d %BMX% echo: exit /b :: %OUT% に wav あれば変換、else なら譜面エラーとみなしてテキスト出力 (書き足し型) :: Ctrl+C 中断時も譜面エラー扱いになるけどまあいいや :: エラー自体を記録したいけど、方法がわからない