@echo off && setlocal DisableDelayedExpansion @title bmx2xxx.bat v0.77 :: このバッチファイルに, BMS の譜面やフォルダ(複数可)を Drop/SendTo すると, 一括処理します :: config : 以下の項目を適宜書き換える**************************************************** set BMX="C:\hoge\bmx2wav" set UBM="C:\hoge\uBMplay.exe" set LR2="C:\hoge\LR2body.exe" set INI="bmx2wav.ini" set UBa="-SP" set LRa="-NS" set LST=0 set SUB=0 :: ********************************************************************************ここまで :: 説明 :: BMX="bmx2wavフォルダのフルパス" // bmx2wav / bmx2wavc があるフォルダのフルパス :: UBM="uBMplay.exe のパス" // フルパスか, bmx2wav フォルダからの相対パス :: LR2="LR2body.exe のパス" // フルパスか, bmx2wav フォルダからの相対パス :: :: INI="bmx2wav / bmx2wavc で使用する設定ファイル名 (使わないなら指定は空でオッケーです)" :: エンコードや強行変換などを行う場合, あらかじめそのように設定した ini をここで指定する :: UBa="uBMplay オプション" // 勝手に次に行くのが嫌なら "-P" に変える :: LRa="LR2 オプション" // "-A":auto "-NS":noscore "-A -NS":both "":null :: LST=0 全譜面を一括処理の対象とする // 1 ならフォルダごとに譜面 1 枚のみを対象とする :: 例: A.bms / B.bms / C.bms が hoge フォルダにあるとき, LST=1 なら A.bms のみをリスト :: :: SUB=0 起動時に以下の選択肢を表示する // 以下の番号を指定すると, 常に処理タイプを固定する :: 1 bmx2xxx // bmx2wavc.exe で一括変換 要 bmx2wavc 1.3.1- (+ CUI encoder) :: 2 bmx2wav // bmx2wav.exe で一括変換 要 bmx2wav 1.3.1- (+ CUI encoder) :: 3 bmx2uBM // 一括鑑賞 要 uBMplay 1.4.3- :: 4 bmx2LR2 // 一括プレイ 要 LR2beta3 090917- :: 5 bmxCopy // 一括コピー (定義 .wav なら .ogg に) :: 6 bmxSeek // 一括隠し譜面検索 (フォルダドロップ時のみ) :: 仕様 : cmd.exe に一度に渡せる引数の長さの制限. XP以降 8191 文字, 2000/NT系 2047 文字 :: 仕様 : & の連続を含む引数は, cmd.exe に渡す前に対処しないと無理ぽ (バッチだけじゃ無理) :: 2010/10/21 CUI 版で [出力 WAV ファイル名] が指定できることを二ヶ月近く見落としてた修正 :: 2010/10/12 bmx2wav 1.3.2 暫定対応, ログ記録やめ, エラー内容抜粋やめ, 拡張子判別やめ :: 2010/10/07 bmx2wav 1.3.0 暫定対応, 同位の譜面は一括処理リストに 1 枚のみ登録する機能 :: 2010/10/01 [GUI]譜面と同名別拡張子のファイル上書き確認で変換中止するとバッチ落ちるの修正 :: 2010/09/30 encoder 側のエラー判定を一時的にやめてたのを復活させた, ほか細かいバグ修正 :: 2010/09/29 encoder の変換完了を待たず次の譜面変換を始めるよう変更, neroAacEnc エラー抑止 :: 2010/09/29 空譜面は他に渡す前に蹴るように変更, 再変換強行時に bmx2wav.ini を汚すバグ修正 :: 2010/09/27 BMS 側エラーで変換失敗した譜面を, むりやり GUI で再変換してみる機能 :: 2010/09/25 譜面を一括複製して, ついでに定義が .wav なら .ogg に書き換える機能 :: 2010/09/22 エンコーダに渡さず wav に変換するだけのモード追加 :: 2010/09/22 ドロップアイテムにフォルダが含まれてたとき隠し譜面一括検索機能 :: 2010/09/20 出力専用フォルダ設定やめ, 起動時チェックやめ, 他こまごまと変更 :: 2010/09/18 WAV と同居可能にしてバックアップ削除, エラー内容取得, playlist に譜面名表示 :: 2010/09/15 機能統合, 先頭に&があったり^を含む引数で心が折れた, xxxlist_tmp.txt :: 2010/09/10 =;, %&!@() を含む名前のアイテムドロップ. & は先頭以外で不連続なら可 :: 2010/09/09 ファイル+フォルダの複数同時ドロップ, 譜面数カウンタ, エラー関係 set DAT=%date:~-10% set DAT=%DAT:/=-% set DAN=%time:~0,8% set DAN=%DAN: =0% :: set STIME=%DAT:-=%%DAN::=% :: バッチパラメータが =;, %& を含む場合の対策, 多重起動の抑制----------------------------- echo パスをチェックしています ... setlocal EnableDelayedExpansion set cmdline=!cmdcmdline:*" =! set cmdline=!cmdcmdline:~0,-1! set fq= set fg= set fb=true set cmdline2= set n=0 if not defined cmdline goto :result :for set c=!cmdline:~%n%,1! if not defined c goto :next if defined fq ( if !c!==^" set fq=& if defined fg set cmdline2=!cmdline2!^" ) else ( if !c!==^ if not defined fb ( set fb=true if defined fg ( set fg= set cmdline2=!cmdline2!^" ) ) if not !c!==^ if defined fb ( set fb= if not !c!==^" ( set fg=true set cmdline2=!cmdline2!^" ) ) if !c!==^" set fq=true& if defined fg set cmdline2=!cmdline2!^" ) set cmdline2=!cmdline2!!c! set /a n+=1 goto :for :next if defined fq set cmdline2=!cmdline2!^"& if defined fg set cmdline2=!cmdline2!^" if defined fg set cmdline2=!cmdline2!^" call :main !cmdline2:%%=%%%%! 4>>%0 exit :main :: --------------------------------------------------------------------------------ここまで set cmdline= set cmdline2= set n= set ERR=0 set BMXTITLE= set BMXVER= :: メイン --------------------------------------------------------------------------------- if not exist %BMX%\ ( echo 指定された bmx2wav 実行ファイルディレクトリが存在しません。&&echo: echo 終了するには何かキーを押してください ... pause > nul endlocal && exit ) cd /d %BMX% setlocal DisableDelayedExpansion cls if not exist bmx2wavc.exe echo 指定されたディレクトリに bmx2wavc.exe が見つかりません。&& goto ending for /f "tokens=1-5 delims= " %%S in ('bmx2wavc.exe -v 2^>^&1') do echo %%S %%T %%U %%V %%W&& call set BMXVER=%%V if not %BMXVER% geq 1.3.1 echo バージョン 1.3.1 以上の BMX2WAV が必要です。&& goto ending echo: echo Now Loading ... rem if exist xxxIgnoreError_tmp.ini del xxxIgnoreError_tmp.ini if exist bmx2wav_xxxblank.ini del bmx2wav_xxxblank.ini if exist xxxfold_tmp.txt del xxxfold_tmp.txt if exist xxxlist_tmp.txt del xxxlist_tmp.txt if exist xxxlist2_tmp.txt del xxxlist2_tmp.txt if exist xxxlog_tmp.txt del xxxlog_tmp.txt if exist xxxmsg_tmp.txt del xxxmsg_tmp.txt if exist xxxERR_tmp.txt del xxxERR_tmp.txt set TMP= set FLD= set CNT=0 set ALL=0 set n=0 :count if .%1==. goto listed set FLD=%1 call set FLD=%%FLD:^^^=「caretcaret」%% if exist %FLD:「caretcaret」=^%\ echo %FLD:「caretcaret」=^%>> xxxfold_tmp.txt for /r %FLD:「caretcaret」=^% %%A in (*.bms *.bme *.bml *.pms) do ( call set /a CNT=%%CNT%%+1 echo ""%%A"">> xxxlist_tmp.txt ) if /i "%~x1"==".bms" goto attrbms if /i "%~x1"==".bme" goto attrbms if /i "%~x1"==".bml" goto attrbms if /i "%~x1"==".pms" goto attrbms shift goto count :attrbms set TMP=%1 call set TMP=%%TMP:^&=「ampersand」%% call set /a CNT=%%CNT%%+1 echo "%TMP:「ampersand」=^&%">> xxxlist_tmp.txt shift goto count :listed echo: if not defined CNT ( echo Error : BMx Files ^(.bms .bme .bml .pms^) Not Found. echo Drop the BMx Files, or Folders, or Both, to this Batch File. goto ending ) setlocal enableDelayedExpansion if !CNT!==0 ( echo 拡張子 .bms .bme .bml .pms のファイルが見つかりません。 if exist xxxfold_tmp.txt ( echo: set choice= set /p choice=フォルダを拡張子偽装譜面検索にかけてみますか? ^(y/n^) ^> if not "!choice!"=="y" if not "!choice!"=="Y" ( if exist xxxIgnoreError_tmp.ini del xxxIgnoreError_tmp.ini if exist xxxfold_tmp.txt del xxxfold_tmp.txt if exist xxxlist_tmp.txt del xxxlist_tmp.txt if exist xxxHID_tmp.txt del xxxHID_tmp.txt if exist xxxlog_tmp.txt del xxxlog_tmp.txt if exist xxxmsg_tmp.txt del xxxmsg_tmp.txt if exist xxxERR_tmp.txt del xxxERR_tmp.txt if exist procterm.exe procterm conime.exe endlocal exit ) setlocal DisableDelayedExpansion goto bmxseek ) goto ending ) setlocal DisableDelayedExpansion call echo BMx : %%CNT%% Files Found. echo: if not defined LST set LST=0 if "%LST%"=="1" call :reList call set ALL=%%CNT%% set CNT=0 set SUC=0 set ERR=0 set Prev=0 set BMXerr=0 set ENCerr=0 set NULerr=0 set NoENC=0 set ENCTYPE= set ERRTYPE= set IgnrERR= set OutPath= set OutPathTMP= set OutPrev=0.wav set OutPrevEnc= set Tpath= set Tname= set Tname2= set Tname3= set LINE= set Last= set TMP= set TMPprev= set DAT2= set DAN2= set choice= set sprt=---------------------------------------------------------------------------- if "%SUB%"=="1" goto bmxsub if "%SUB%"=="2" goto GUIsub if "%SUB%"=="3" goto uBMsub if "%SUB%"=="4" goto LR2sub if "%SUB%"=="5" goto bmxcopy if "%SUB%"=="6" goto bmxseek echo 1. bmx2xxx echo 2. bmx2wav echo 3. bmx2uBM echo 4. bmx2LR2 echo 5. bmxCopy if exist xxxfold_tmp.txt ( echo 6. bmxSeek ) echo: setlocal EnableDelayedExpansion :select set /p choice=Input the number. ^> if not "!choice!"=="" set choice=!choice:~0,1! if "!choice!"=="1" echo: && setlocal DisableDelayedExpansion && goto bmxsub if "!choice!"=="2" echo: && setlocal DisableDelayedExpansion && goto GUIsub if "!choice!"=="3" setlocal DisableDelayedExpansion && goto uBMsub if "!choice!"=="4" setlocal DisableDelayedExpansion && goto LR2sub if "!choice!"=="5" setlocal DisableDelayedExpansion && goto bmxcopy if exist xxxfold_tmp.txt ( if "!choice!"=="6" setlocal DisableDelayedExpansion && goto bmxseek ) goto select :: ---------------------------------------------------------------------------------------- :: サルブーチン --------------------------------------------------------------------------- :result if not defined CNT ( echo: echo ファイルかフォルダをバッチファイルにドロップしてください。 echo 複数のアイテムを同時に選択してドロップすることもできます。 echo: echo 終了するには何かキーを押してください ... pause > nul endlocal && exit ) if %CNT%==0 ( echo 拡張子 .bms .bme .bml .pms のファイルが見つかりません。 goto ending ) echo %sprt% echo: bmx2wavc.exe -version echo: if %CNT%==1 ( if %SUC%==1 ( call echo 1 件の変換に成功しました。 ) else ( call echo 1 件の変換に失敗しました。 ) ) else ( if %SUC%==0 ( call echo %CNT% 件の変換にすべて失敗しました。 ) else ( if %SUC%==%CNT% ( call echo %CNT% 件の変換にすべて成功しました。 ) else ( call echo %CNT% 件中 %SUC% 件の変換に成功しました。 ) ) ) set DAT2=%date:~-10% set DAT2=%DAT2:/=-% set DAN2=%time:~0,8% set DAN2=%DAN2: =0% if %ERR%==0 ( call title bmx2xxx done. ) else ( call title bmx2xxx done. ^(log: xxxERR.txt^) ) >> xxxERR.txt echo ^(%DAT2% %DAN2%^) >> xxxERR.txt echo %sprt% echo: echo BMx : %CNT% call echo ENC : %%SUC%% / %%CNT%% call echo ERR : %%ERR%% / %%CNT%% echo RUN : %DAT% %DAN% echo END : %DAT2% %DAN2% goto ending :: ---------------------------------------------------------------------------------------- :uBMsub title bmx2uBM if not defined UBM echo uBMplay のパスが設定されていません。&& goto ending if not exist %UBM% echo %UBM% が見つかりません。&& goto ending cls echo bmx2uBM START echo: echo WScript.Sleep 300 > tmp.vbs cscript //NoLogo tmp.vbs del tmp.vbs if not defined UBa set UBa="" for /f "delims=" %%F in (xxxlist_tmp.txt) do ( call set /a CNT=%%CNT%%+1 set "TMP=%%F" call :blankQ set TMP="%%~nxF" call set TMP=%%TMP:^&=「ampersand」%% call set TMP="%%TMP:"=%%" if defined LINE ( call echo PLAY %%CNT%% / %%ALL%% : %%TMP:「ampersand」=^&%% call title %%TMP:「ampersand」=^&%% : bmx2uBM %UBM% %UBa:~1,-1% "%%F" ) else ( call echo PLAY %%CNT%% / %%ALL%% : %%TMP:「ampersand」=^&%% ^(^! OBJ 0 SKIP ^!^) ) set LINE= ) if %CNT%==0 ( echo 拡張子 .bms .bme .bml .pms のファイルが見つかりません。 goto ending ) echo: title bmx2uBM done. call echo BMx : %%CNT%% echo RUN : %DAT% %DAN% set DAT2=%date:~-10% set DAT2=%DAT2:/=-% set DAN2=%time:~0,8% set DAN2=%DAN2: =0% echo END : %DAT2% %DAN2% goto ending :LR2sub title bmx2LR2 if not defined LR2 echo LR2 のパスが設定されていません。&& goto ending if not exist %LR2% echo %LR2% が見つかりません。&& goto ending cls echo bmx2LR2 START echo: echo WScript.Sleep 300 > tmp.vbs cscript //NoLogo tmp.vbs del tmp.vbs if not defined LRa set LRa="" for /f "delims=" %%J in (xxxlist_tmp.txt) do ( call set /a CNT=%%CNT%%+1 set "TMP=%%J" call :blankQ set TMP="%%~nxJ" call set TMP=%%TMP:^&=「ampersand」%% call set TMP="%%TMP:"=%%" set FLD=%%J call set FLD="%%FLD:"=%%" if defined LINE ( call echo PLAY %%CNT%% / %%ALL%% : %%TMP:「ampersand」=^&%% call title %%TMP:「ampersand」=^&%% : bmx2LR2 call %%LR2%% %%LRa:~1,-1%% %%FLD%% ) else ( call echo PLAY %%CNT%% / %%ALL%% : %%TMP:「ampersand」=^&%% ^(^! OBJ 0 SKIP ^!^) ) set LINE= ) if %CNT%==0 ( echo 拡張子 .bms .bme .bml .pms のファイルが見つかりません。 goto ending ) echo: title bmx2LR2 done. call echo BMx : %%CNT%% echo RUN : %DAT% %DAN% set DAT2=%date:~-10% set DAT2=%DAT2:/=-% set DAN2=%time:~0,8% set DAN2=%DAN2: =0% echo END : %DAT2% %DAN2% goto ending :blankQ rem パラメタ不正 for は do 以下を実行しないので, 内部オブジェ数ゼロなら変数をセットせず帰る for /f %%I in ('findstr /i /r "^#[0-9][0-9][0-9][0-9A-Z][0-9A-Z]:[0-9A-Z]*" ^<"%TMP:"=%"') do ( set LINE=true goto blankQ2 ) :blankQ2 exit /b :: ---------------------------------------------------------------------------------------- :ending echo: cd /d %BMX% setlocal EnableDelayedExpansion set choice= if not "%ERR%"=="0" ( set choice= set /p choice=終了します。エラーログを開きますか? ^(y/n^) if not "!choice!"=="" set choice=!choice:~0,1! if "!choice!"=="y" start xxxERR.txt if "!choice!"=="Y" start xxxERR.txt ) else ( echo 終了するには何かキーを押してください ... pause > nul ) if exist xxxIgnoreError_tmp.ini del xxxIgnoreError_tmp.ini if exist bmx2wav_xxxblank.ini del bmx2wav_xxxblank.ini if exist xxxfold_tmp.txt del xxxfold_tmp.txt if exist xxxlist_tmp.txt del xxxlist_tmp.txt if exist xxxHID_tmp.txt del xxxHID_tmp.txt if exist xxxlog_tmp.txt del xxxlog_tmp.txt if exist xxxmsg_tmp.txt del xxxmsg_tmp.txt if exist xxxERR_tmp.txt del xxxERR_tmp.txt if exist procterm.exe procterm conime.exe endlocal exit :: ---------------------------------------------------------------------------------------- :bmxsub setlocal EnableDelayedExpansion if not defined INI ( set INI= ) else ( if not exist !INI! ( echo 指定された BMX2WAV 設定ファイル !INI! が見つかりません。 echo 設定ファイルを使わずに変換を実行します。 echo 変換ファイルは譜面ファイルと同じフォルダに出力されます。 echo: set INI= ) else ( set INI=-config !INI! ) ) setlocal DisableDelayedExpansion echo 一括処理を開始。ウィンドウを閉じるか Ctrl+C で中止します。 if "%choice%"=="1" ( echo WScript.Sleep 300 > tmp.vbs cscript //NoLogo tmp.vbs del tmp.vbs ) else ( pause ) title bmx2xxx running... echo: if not exist xxxlist_tmp.txt ( echo 変換する譜面のリストが見つかりません。一括変換処理を中止します。 goto ending ) echo %sprt% echo %sprt%>> xxxERR.txt set DAT2=%date:~-10% set DAT2=%DAT2:/=-% set DAN2=%time:~0,8% set DAN2=%DAN2: =0% echo ^(%DAT2% %DAN2%^)>> xxxERR.txt for /f "delims=" %%F in (xxxlist_tmp.txt) do ( set "TMP=%%F" call set /a CNT=%%CNT%%+1 echo: set Tname="%%~nxF" set Tname2="%%~nF" set Tpath="%%~dpF" call :GetOutWav call set Tname=%%Tname:^&=「ampersand」%% call set Tname="%%Tname:"=%%" call echo BMx no.%%CNT%% / %%ALL%% : %%Tname:「ampersand」=^&%% を変換中です ... call title %%CNT%%/%%ALL%% %%Tname:「ampersand」=^&%% : bmx2xxx call :bmxRun ) goto result :bmxRun bmx2wavc.exe %INI% "%TMP%" %OutWav% if errorlevel 1 ( call set /a ERR=%%ERR%%+1 echo: echo エラーにより変換中止。次の処理に移ります。 echo: echo %sprt% call set "TMP=%%TMP:^&=「ampersand」%%" call set "TMP=%%TMP:~2,-2%%" (call echo Err %%ERR%% : "%%TMP:「ampersand」=^^&%%")>> xxxERR.txt ) else ( call set /a SUC=%%SUC%%+1 echo: echo %sprt% ) exit /b :: ---------------------------------------------------------------------------------------- :bmxseek if not exist xxxfold_tmp.txt ( echo 現在 bmx2xxx は拡張子偽装譜面一括検索モードに設定されています。 echo 単数または複数のフォルダをバッチにドロップして起動してください。&&goto ending ) if exist xxxlist_tmp.txt del xxxlist_tmp.txt if exist xxxHID_tmp.txt del xxxHID_tmp.txt echo: echo 指定フォルダ配下にある拡張子偽装譜面を、階層無制限で検索しています。 echo 場合により数分かかります。ウィンドウを閉じるか Ctrl+C で中止します。 echo: echo Now Searching ... title bmxSeek running... if not exist xxxfold_tmp.txt echo 検索するフォルダのリストが見つかりません。処理を中止します。&&goto ending for /f "delims=" %%F in (xxxfold_tmp.txt) do ( if not exist %%F echo 指定されたフォルダが見つかりません。処理を中止します。&&goto ending cd /d %%F findstr /i /m /r /s "^#[0-9][0-9][0-9][0-9A-Z][0-9A-Z]:[0-9A-Z]*" "*.*" | findstr /i /r /v ".bms$ .bme$ .bml$ .pms$">>%BMX%\xxxHID_tmp.txt ) echo: cd /d %BMX% title bmxseek done. if exist xxxfold_tmp.txt del xxxfold_tmp.txt for /f "delims=:" %%A in ('findstr /n "^" xxxHID_tmp.txt') do set CNT=%%A if %CNT%==0 echo 拡張子偽装譜面は見つかりませんでした。&& goto ending type xxxHID_tmp.txt echo: call echo 拡張子偽装譜面の可能性があるファイルが %%CNT%% 件見つかりました。 goto ending :: ---------------------------------------------------------------------------------------- :bmxcopy if not exist xxxlist_tmp.txt echo 複製する譜面のリストが見つかりません。処理を中止します。&&goto ending echo: echo 指定フォルダ配下の全譜面を、定義 .wav なら .ogg に変更して複製中です。 echo 場合により数分かかります。ウィンドウを閉じるか Ctrl+C で中止します。 echo: echo Now Copying ... title bmxCopy running... for /f "delims=" %%F in (xxxlist_tmp.txt) do ( cd /d %%F\..\ set TMP="%%~nxF" call set TMP="%%TMP:"=%%" call :copySub ) echo 譜面の複製 ^(+定義変更^) が終了しました。 goto ending :copySub copy /y %TMP% %TMP:.=_bmxcopy.% for /f "delims=" %%0 in ('findstr ".wav$" ^<%TMP%') do ( set LINE=%%0 call set LINE="%%LINE:"=%%" call set LINE=%%LINE:.wav=.ogg%% call echo;%%LINE:~1,-1%%>> %TMP:.=_bmxcopy.% ) exit /b :: ---------------------------------------------------------------------------------------- :GUIsub setlocal EnableDelayedExpansion if not exist bmx2wav.exe echo bmx2wav.exe が見つかりません。&& goto ending if not defined INI ( set INI="" goto GUIsub ) else ( if not exist !INI! ( echo BMX2WAV 設定ファイルが指定されていないか、もしくは見つかりません。 echo bmx2wav.exe 初回起動時の設定で WAV への変換を実行します。 echo 変換ファイルは譜面ファイルと同じフォルダに同じ名前で出力されます。 echo: rem 同位に設定済み bmx2wav.ini があると -c 無しでも読み込まれるので, 変数 INI 初期化だけじゃダメ type nul > bmx2wav_xxxblank.ini set INI="bmx2wav_xxxblank.ini" goto GUIsub ) else ( set INIfile=!INI:"=! set INI=-config !INI! ) ) ) setlocal DisableDelayedExpansion echo 一括処理を開始。ウィンドウを閉じるか Ctrl+C で中止します。 if "%choice%"=="2" ( echo WScript.Sleep 300 > tmp.vbs cscript //NoLogo tmp.vbs del tmp.vbs ) else ( pause ) title bmx2wav running... echo: if not exist xxxlist_tmp.txt ( echo 変換する譜面のリストが見つかりません。一括変換処理を中止します。 goto ending ) echo %sprt% echo %sprt%>> xxxERR.txt set DAT2=%date:~-10% set DAT2=%DAT2:/=-% set DAN2=%time:~0,8% set DAN2=%DAN2: =0% echo ^(%DAT2% %DAN2%^)>> xxxERR.txt set AUTO=-auto_start -auto_close -no_config_auto_save set OutWav= set OutWavPath= set OutWavExist= for /f "delims=" %%F in (xxxlist_tmp.txt) do ( set "TMP=%%F" call set /a CNT=%%CNT%%+1 echo: set Tname="%%~nxF" set Tname2="%%~nF" set Tpath="%%~dpF" call :GetOutWav call set Tname=%%Tname:^&=「ampersand」%% call set Tname="%%Tname:"=%%" call echo BMx no.%%CNT%% / %%ALL%% : %%Tname:「ampersand」=^&%% を変換中です ... call title %%CNT%%/%%ALL%% %%Tname:「ampersand」=^&%% : bmx2wav call :GUIrun set OutWav= ) goto result :: 定義やフォルダに [譜面名.wav] があれば, [出力 BMS ファイル名] に [hoge\bmx_譜面名.wav] をセット :GetOutWav set OutWavPath="%Tpath:"=%" call set OutWavPath=%%OutWavPath:%BMX:"=%\=%% call set OutWavExist="%%OutWavPath:"=%%%%Tname2:"=%%.wav" rem call set OutWavExist2="%%OutWavPath:"=%%bmx_%%Tname2:"=%%.wav" rem findstrアンパサンド落ち回避 call set Tname3=%%Tname2:^&=「ampersand」%% call set Tname3="%%Tname3:"=%%.wav" set TMP2="%TMP:"=%" call set TMP2=%%TMP2:^&=「ampersand」%% call :OutWavQ exit /b :OutWavQ findstr %Tname3:「ampersand」=^&% %TMP2:「ampersand」=^&% > nul 2>&1 if not errorlevel 1 call set OutWav="%%OutWavPath:"=%%bmx_%%Tname2:"=%%.wav" if exist %OutWavExist% call set OutWav="%%OutWavPath:"=%%bmx_%%Tname2:"=%%.wav" rem call :OutWavQQ exit /b :OutWavQQ rem 定義やフォルダに [bmx_bmx_...bmx_譜面名.wav] がすでにある場合, 俺が爆発する rem exit /b :GUIrun bmx2wav.exe %AUTO% %INI% "%TMP%" %OutWav% if not errorlevel 1 ( call set /a ERR=%%ERR%%+1 echo: echo エラーにより変換中止。次の処理に移ります。 echo: echo %sprt% call set "TMP=%%TMP:^&=「ampersand」%%" call set "TMP=%%TMP:~2,-2%%" (call echo Err %%ERR%% : "%%TMP:「ampersand」=^^&%%")>> xxxERR.txt ) else ( call set /a SUC=%%SUC%%+1 echo: echo %sprt% ) exit /b :: ---------------------------------------------------------------------------------------- :reList if not exist xxxlist_tmp.txt exit /b if exist xxxlist2_tmp.txt del xxxlist2_tmp.txt echo Now Listing ... set CNT=0 ( echo Set objFSO = CreateObject ^("Scripting.FileSystemObject"^) echo Set objInFile = objFSO.OpenTextFile^("xxxlist_tmp.txt",1^) echo Set objOutFile = objFSO.CreateTextFile^("xxxlist2_tmp.txt",true^) echo Cnt=0 echo Do Until objInFile.AtEndOfStream echo tempLine = objInFile.ReadLine^(^) echo nowFold = objFSO.GetParentFolderName^(tempLine^) echo If Cnt=0 Then echo preFold=nowFold echo objOutFile.WriteLine tempLine echo Cnt=Cnt+1 echo End If echo If Not preFold=nowFold Then echo preFold=nowFold echo objOutFile.WriteLine tempLine echo Cnt=Cnt+1 echo End If echo Loop echo objInFile.Close echo objOutFile.Close echo Wscript.Quit Cnt )> tmp.vbs cscript //NoLogo tmp.vbs set CNT=%errorlevel% del tmp.vbs if exist xxxlist_tmp.txt if exist xxxlist2_tmp.txt (del xxxlist_tmp.txt) && rename xxxlist2_tmp.txt xxxlist_tmp.txt echo: echo BMx : %CNT% Files Listed. echo: exit /b