LoginSignup
1
3

More than 3 years have passed since last update.

初めてバッチファイルを作った話

Last updated at Posted at 2019-12-27

仕事で大量のデータ取り込みのテストを行うに当たって100個のファイルが必要になり、地道に手動でテストデータ入りのファイルをコピペすると1日かかりますし、腱鞘炎になってしまう!
何とか一瞬で100個のファイルをコピー出来る手段は無いのか・・・と調べると、バッチファイルを作って自動でコピー出来ることが判明!
「バッチファイル・・・難しそうだけどやってみるか!」と思い、さっそく作成しました。

作成したバッチファイルの概要

1.編集で指定した数の分だけファイルをコピーする
2.コピーされた際、0埋めされた番号が採番されること

作成したバッチファイルの中身

ネットで調べながら以下のバッチファイルが完成致しました。

Copyfile.bat
setlocal enabledelayedexpansion

for /l %%n in (2,1,10) do (
set num=00%%n
echo !num:~-3!
copy C:\Users\Public\TEST\test_001_20191226.txt C:\Users\Public\TEST\test_!num:~-3!_20191226.txt
)
endlocal
pause

中身の解説

setlocal enabledelayedexpansion
ローカル変数を使う場合に宣言する時に使うコマンド
これを使うことで、バッチ実行中に変数の値を変化させることが出来ます。

for /l %%n in (2,1,10) do
「for」は繰り返し処理をさせるコマンド。
「/l」は後ろの(開始の番号,増分,終了の番号)を有効にさせるコマンドです。
「%%n」は格納する変数です。
この場合は「2から1ずつ採番し、10になったら終了」という意味になります。

set num=00%%n
echo !num:~-3!

ここでは上記の変数の左2桁を0で埋めたものを「num」という変数にセットしました。
これだけだと10以降に差し掛かった時「0010」となってしまう為、「num」の右2桁を読み込む処理を追加しました。
「!」で囲まれているのは「遅延環境変数」にさせる為です。
バッチファイルの特徴として、「設定した条件に差し掛かった時、以後全ての変数を展開させる」というものがあります。
これだと初めに格納した値でしか処理されないです。
その為、後のタイミングで展開させたい時に使うのが「遅延環境変数」です。
上記のsetlocal enabledelayedexpansionを最初に宣言し、展開するタイミングをずらしたい変数を「!」で囲みます。

copy C:\Users\Public\TEST\test_001_20191226.txt C:\Users\Public\TEST\test_!num:~-3!_20191226.txt
)

「copy」はファイルをコピーさせるコマンドです。
copy コピー元のファイル名 コピーされるファイル名という構文で使います。

endlocal
最初に宣言した「setlocal」の範囲を締めるコマンド。

pause
処理が全て完了した後自動でコマンドプロンプトが消えず、手動で終了させるコマンド。
「終了する時は何かキーを押して下さい」と表示させるのはこれ。

実際に動かしてみた

作成したバッチファイルを以下のフォルダにセットします。
無題.png

↓バッチが動きました!
image.png

↓フォルダを確認すると、「010」まで採番されたファイルが作成されていることを確認
無題.png

まとめ

以上より、ファイルを大量にコピーさせるバッチファイルを作成致しました。
0埋めの連番処理で少々詰まってしまいましたが、思った以上に簡単に作ることが出来ました。
今回作ったものをきっかけに、業務効率化を図るのに自分でバッチファイルを作る選択肢が増え、普段の業務をよりスムーズに出来るようにさせていきたいと思います。

2020年7月10日 追記

久しぶりにバッチファイルを動かそうとしたら、ファイル名に「()」が含まれていることが原因で動かすことが出来ませんでした。
ファイル名から「()」を取り除いたら正常に動くことは出来ましたが、「()」や「「|」が含まれているファイルに対しては現在調査中ですが、これらの記号をファイル名に含ませることはタブーに近いことみたいですね。

参考文献

バッチファイルでファイル名に連番を付けてコピーする~実行解説

SE日記 windowsコマンドで連番付きのファイルを一気に大量に作る/コピーする方法

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

知識ゼロからのwindowsバッチファイル入門

バッチファイル界の魔境『遅延環境変数』に挑む(おまけもあるよ)

ファイル名に使わない方が良い文字

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3