プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Windowsバッチファイル(.bat)、ファイル名に連番を付けてファイルをコピーする
結論から書くと、こんな感じですφ(--)

■やりたかったこと
 「hoge.txt」を「hoge001.txt」から「hoge100.txt」まで
 連番付きのファイル名にしてコピーする。

■作ったバッチファイル
@echo off

setlocal enabledelayedexpansion

REM コピー元ファイル名
set org_file_name=hoge.txt

REM コピー後ファイル名連番より前の部分
set file_name_prefix=hoge

REM コピー後ファイル名連番より後の部分
set file_name_extension=.txt

REM 連番を何桁までゼロ埋めするか
set pad=3

REM コピーするファイルの数
set make_file_num=100

for /l %%i in (1, 1, %make_file_num%) do (
    REM コピー後ファイル名生成
    set num=00000%%i
    set file_path=%file_name_prefix%!num:~-%pad%!%file_name_extension%

    REM ファイルコピー
    copy %org_file_name% !file_path!
)

一応、コードの補足をしておきますね。

やっている処理は、単に連番付きのファイル名を生成してコピーしているだけです。

set num=00000%%i
set file_path=%file_name_prefix%!num:~-%pad%!%file_name_extension%

で連番付きファイル名を作成し

copy %org_file_name% !file_path!

でコピーしています。
って、コメントでも書いてあるので、分かりますよね。

連番のゼロ埋めについて、よく分からない方は

Windowsバッチファイル(.bat)、数値を特定の桁数になるように0埋めする

の記事をご覧ください。
今回は横着して一番見た目が単純なのにしましたが、やり方はいろいろあります。

また、今回作ったバッチファイルを理解するには、遅延環境変数の展開についての知識が必要です。
遅延環境変数の展開については

 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典:遅延環境変数

あたりが分かりやすいと思います(ステマ)。

他にも実際のバッチファイルでは、エラー処理を入れたり、
ファイル名等を引数で渡すようにしたりしています。
ただまぁ、核となる処理は今回書いた程度ですよ(--)ノ

1.ファイル名を生成して
2.ファイルをコピーする
3.「1.」「2.」を繰り返す

だけです。

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:コマンド/バッチ  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事