- 締切済み
バッチファイル 指定ファイル
お世話様です。 あるバッチファイルの作成に困っております。 『D:\test』フォルダに下記の3ファイルがあります。 ・CS_090609.txt ・CS_090603.txt ・CS_081215.txt があり、数字の部分は作成された日を表しております。 上記ファイルだと、上から2009/6/5・2009/6/3・2008/12/15に 作成されているとします。 今年の6月9日にあるバッチファイルでCS_090609.txtをそのまま残し それ以外のCS_090603.txt・CS_081215.txtをいったん『D:\test\bkp』フォルダに コピーし、その後、『D:\test』フォルダにある090603.txt・CS_081215.txtを削除 する処理を実施したいのですが、どうもうまく作成出来ません。 せいぜい自分のスキルでは、CS_*.txtですべてのファイルを『D:\test\bkp』にコピーし、 その後、『D:\test』フォルダにあるすべてのファイルの削除しかできません。 お手数ですが、何かご教授願いますでしょうか? ※サンプルコードがあると、助かります。 何卒宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mtaka2
- ベストアンサー率73% (867/1179)
--- set dst=D:\test\bkp set src=D:\test set todayfile=CS_%DATE:~2,2%%DATE:~5,2%%DATE:~8,2%.txt cd /D %src% for %%f in ( CS*.txt ) do if not %%f == %todayfile% move %%f %dst%\ --- こんな感じでしょうか。 CMD.EXEの拡張機能は有効にしておいてください。 ・拡張機能が有効な状態だと、環境変数DATE に、今日の日付が入ります。(フォーマットは2009/06/07) ・この日付文字列から、「3文字目から2文字」「6文字目から2文字」「9文字目から2文字」を取ってくることで、今日のファイル名「CS_090607.txt」という文字列が得られます。 ・あとは、forループで、対象ファイルが今日のファイルでないものだけ、移動処理をすればOK。
補足
> CMD.EXEの拡張機能は有効 > あとは、forループで、対象ファイルが今日のファイルでないものだけ、移動処理をすればOK。 ご回答ありがとうございました。 申し訳ありません。 上記2つの方法がどうやって設定していいのかわかりません。 ご教授願いますでしょうか? 宜しくお願い致します。