固定長の長さの数値を使いまわすバッチ
頑張った割には糞どうでもいいものがあったりするものがあります。
使い方
(ここでは後述のソースをnumbered.batで保存したとします) 大域変数にバッチ名の変数名で数字を保存します。 バッチを呼び出される度にデータがカウントアップします
サンプル
numbered.bat 4 echo {} 0000 numbered.bat 4 echo {} 0001
REM ファイルの古い順に(4ケタの数字).datというファイル名でリネームします for /F %i in ('dir /OD /B') DO numbered.bat 4 MOVE "%i" {}.dat
ソース
@ECHO OFF SETLOCAL EnableDelayedExpansion CALL :COUNT ENDLOCAL @ECHO ON @REM 大域環境変数にぶっこむ @SET "%~nx0=%ERRORLEVEL%" @ECHO OFF SETLOCAL EnableDelayedExpansion REM ゼロパディング作成 FOR /L %%i in (1,1,%1) DO SET ZEROS=0!ZEROS! REM 大域変数から値を再取得。パディングした文字列とくっつけ、指定の文字長分だけ取り出す SET Y=!%~nx0! SET Y=%ZEROS%%Y% SET Y=!Y:~-%1,%1! REM コマンド分を作成。最初の引数は扱わないようにFLAGでコントロール SET FLAG=0 SET CMD= FOR %%I IN (%*) DO IF !FLAG! == 0 (SET /A FLAG=1) ELSE (SET CMD=!CMD! %%I) SET CMD=!CMD:{}=%Y%! REM コマンド実行先頭に無駄なスペースが入っているので削除しておく !CMD:~1! ENDLOCAL @ECHO ON @goto :EOF :COUNT SET /A X="%~nx0=!%~nx0! + 1" EXIT /B !X!