DOSバッチのコピーについて
フォルダ内の複数ファイルを、別フォルダにコピーするバッチを作りたいと考えています。
具体的には、コピー元ファイルは、オリジナルファイル名+日付.CSVの法則で、100ファイル程度が毎日コピー元フォルダに出力されます。
コピーしたいファイルは、その都度、日付単位で変わるので、バッチ実行時に任意のコピーしたい日付を指定(入力)して、別フォルダに
コピーさせたいのですが、何か方法ありますでしょうか?
尚、昔の馴染みがあり、理解しやすいので、DOSのバッチで実現できないでしょうか?
例
sample1_20081124.CSV
sample2_20081124.CSV
sample1_20081125.CSV
sample2_20081125.CSV
sample1_20081126.CSV
sample2_20081126.CSV
↓ 20081125のファイルだけコピーする
sample1_20081125.CSV
sample2_20081125.CSV
宜しくお願い致します。
今日の日付は %DATE% で参照できるので、それを使います。
標準では 2008/11/11 のような形式なので%DATE:/=%と / を削除します。
copy sample*_%DATE:/=% BACKUP\
オリジナルファイル名が決まっていれば、
for %%i in (A B C) do copy [コピー元パス\]%%i_%1.csv [コピー先パス]
というような文でOKかと思います。
これで、
> hoge.bat 20081125
と実行すれば、
A_20081125.csv
B_20081125.csv
C_20081125.csv
がコピーされるかと思います。
(A B C にオリジナルのファイル名が入る。ファイル名が長くて多い場合は複数行に分けるか、/f オプションを使って、別のファイルにファイル名一覧を作成すると良いでしょう)
オリジナルファイル名が不定で、桁数が等しいなら、
copy [コピー元パス\]????????_%1.csv [コピー先パス]
といった感じで。?を桁数分だけ入れます。
オリジナルファイル名に同じ文字があるなら、その部分は次のように具体的な文字で指定しても良いです。
copy [コピー元パス\]sample??_%1.csv [コピー先パス]
こんな感じでどうでしょう?
- 最新から表示
- |
- 回答順に表示












