windowsでのファイル移動めも

毎日毎日同じような作業をするのが手間なので、
自動化したいなぁと思っていろいろ考えてみた。
したいことは、
あるディレクトリに毎日ファイルが平で作られる。
そのファイルをタイトルごとに決まったディレクトリに移動する。

src dir
¥src¥AAA
¥src¥BBB
¥src¥CCC

dst
¥dst¥AAA¥
¥dst¥BBB¥
¥dst¥CCC¥

こんな感じになってたとして、
AAA BBB CCCのファイルをそれぞれ、
¥dst¥AAA¥
¥dst¥BBB¥
¥dst¥CCC¥

へ移動したい。

¥dst¥AAA¥AAA
¥dst¥BBB¥BBB
¥dst¥CCC¥CCC

って言う感じ。(拡張子とかは抜いてますが、AAA以外にも日付が入ったりしてる)

とりあえず、コマンドプロンプトから実行できるやつはこれ。

cd ¥src
FOR /f %i IN ('dir /b ¥dst¥') DO FOR /f %j IN ('dir /b /s *%i*') DO move "%j" ¥dst¥%i¥

まずは、srcディレクトリに移動して、
dstのディレクトリ一覧を取得して、その結果でsrcディレクトリを検索する。
そして、その結果をdstの指定のディレクトリに移動する。
という感じです。
パスは普通のC:¥みたいに変えて実行してみてください。
また、これだと一発でmoveとなるので、一応コピーを取っておきたいということならば、
moveをcopyとしてやればsrcのファイルは残ったままになります。
(ただこのコマンドだと溜まり続けるファイルすべてを検索対象としてしまうので、
日々コピー対象が増えておもくなt)

上のはコマンドプロンプトからの実行
下のはバッチスクリプトからの実行

cd ¥src
FOR /f %%i IN ('dir /b ¥dst¥') DO FOR /f %%j IN ('dir /b /s *%%i*') DO move "%%j" ¥dst¥%%i¥
FORコマンドの中で変数%i、%jに%を追加しただけ。

そしてこれを毎日実行するようにするため、
タスクスケジューラに登録する。
タスクスケジューラはコントロールパネルの管理ツールから
タスクスケジューラをダブルクリック
基本タスクの作成より
適当な名前をつけて、
実行間隔
自分は毎日実行したいので毎日を選択
細かい時間を指定。
何をさせるかの指定でプログラムの開始
実行するプログラムの指定。
ここでは自分で作った、****.batファイルのパスを指定、または参照する。



それで次へで定期実行の設定完了。
実験的に10分後とかに指定してみて実行させてみるとか。


参考
http://ykr414.com/dos/dos05.html#07
http://www.atmarkit.co.jp/fwin2k/win2ktips/505flists/flists.html
http://www.atmarkit.co.jp/fwin2k/win2ktips/1368taskw7/taskw7.html

コメント

このブログの人気の投稿

有料洗車

Macbook Air 2012 買いました