DOSコマンドで深い階層にある特定の拡張子(.zip)を任意のフォルダにコピーする
DOSコマンドで深い階層にある特定の拡張子(.zip)を任意のフォルダにコピーする

手動で、いちいちフォルダを辿ってコピーするのは手間ですのよね。
それを行うDOSのバッチファイル(コマンド)です。
for /r を使います。
調べるフォルダ : C:\source
この下の深い階層も辿って調べる
コピー先の1フォルダ:C:\destination\
@echo off
for /r "C:\source" %%i in (*.zip) do copy "%%i" "C:\destination\"
for /r の仕組み
基本構文
- /r: 再帰的にサブディレクトリも含めて検索します。
- [検索開始フォルダ]: 検索を開始する基準となるフォルダのパス。指定しなければ現在のディレクトリが基準になります。
- %変数: 見つかったファイルやディレクトリを格納するための変数(例えば
%iなど)。 - (検索条件): 検索するファイルの条件(例:
*.zipは ZIPファイル)。 - do コマンド: 検索結果に対して実行するコマンド。
実行例
例えば、以下のようにコマンドを実行すると:
C:\sourceフォルダ以下を再帰的に検索します。- 拡張子が
.zipのファイルをすべてリストアップして、結果をechoで出力します。
for /r がポイントな理由
再帰的な検索を一行で実現
- 通常、DOSコマンドではサブフォルダを手動で一つずつ指定するのは非常に手間ですが、
for /rを使うことで全サブフォルダを自動で巡回できます。
- 通常、DOSコマンドではサブフォルダを手動で一つずつ指定するのは非常に手間ですが、
フィルタリング機能
(検索条件)にファイル名や拡張子を指定することで、対象ファイルを絞り込めます。
柔軟な処理
doの後に好きなコマンドを指定できるので、コピーや移動、圧縮、リネームなどさまざまな操作が可能です。
応用例
1. ZIPファイルの移動(元ファイルを削除)
2. ZIPファイルのリストをファイルに保存
3. 特定のフォルダ以下にZIPファイルがなければ通知
for コマンドが使いこなせると、簡単な自動化スクリプトが書けるようになります。さらに柔軟な処理が必要なら、PowerShellやPythonなどに移行するのも良い選択肢です。
このブログへのコメントは muragonにログインするか、
SNSアカウントを使用してください。