バッチファイルで前ゼロ付き連番ファイル生成

| コメント(3) | トラックバック(0)

windowsのバッチファイルにやらせることなんてたいした内容じゃないんだけど、いかんせん文法が貧弱すぎて簡単なことなのに時間を食うのがいつものパターン。忘れないようにメモっておくよ。

ファイル生成をする際に、時々連番を使ったファイル名を使用したいという場合がある。まぁ大抵の場合、エクスプローラー上での見た目をよくするため、前ゼロ使って桁数を揃えるわけです。

先にコード載せるとこんな感じ。
http://gist.github.com/175608

@echo off
:: test of "sequence number file"
setlocal enabledelayedexpansion 
 
set prefix=C:\path\to\hoge.
set extension=.bk
set pad=2
 
for /l %%i in (1, 1, 15) do (
	set num=00000%%i
	set file_path=%prefix%!num:~-%pad%!%extension%
	echo !file_path!
)
 
pause

実行結果は

C:\path\to\hoge.01.bk
C:\path\to\hoge.02.bk
C:\path\to\hoge.03.bk
C:\path\to\hoge.04.bk
C:\path\to\hoge.05.bk
C:\path\to\hoge.06.bk
C:\path\to\hoge.07.bk
C:\path\to\hoge.08.bk
C:\path\to\hoge.09.bk
C:\path\to\hoge.10.bk
C:\path\to\hoge.11.bk
C:\path\to\hoge.12.bk
C:\path\to\hoge.13.bk
C:\path\to\hoge.14.bk
C:\path\to\hoge.15.bk
続行するには何かキーを押してください . . .

後はfile_pathを好きなコマンドに料理させてあげればよい。
前ゼロ付きまくりな数値を右から指定桁分取り出すだけだが、ちゃんと動かすまでに時間かかっちゃったなぁ...。

::でコメントになるって今まで知らんかった...。こっちの方がremよりも見やすくて良い。しかし、doブロック内で::使うとエラーになるのがなんだかなぁ...。

forループ中に宣言した変数を正しく展開するには
setlocal enabledelayedexpansion とやって遅延環境変数の展開機能を有効化しないとまずいらしい。展開するときは%ではなく!を使う。これを知らなくてすげーハマった。


参考:
連番フォルダ作成バッチ:.knowledge - frog.raindrop.jp
[窓] DOSでのforループ | 今日もねむひ(-。-)zZZ
CMD.EXEの遅延環境変数の展開 - KOBUN

トラックバック(0)

トラックバックURL: https://hoge.sub.jp/blog-cgi/mt/mt-tb.cgi/1389

このブログ記事について

このページは、Lyoが2009年8月27日 00:37に書いたブログ記事です。

ひとつ前のブログ記事は「fooの語源」です。

次のブログ記事は「やきぐり」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

OpenID対応しています OpenIDについて
Powered by Movable Type 7.9.3