WindowsXPを使用しています。
ルートフォルダの下に子フォルダがたくさんあるとして、それぞれの子フォルダの下にファイルがあります。
「ルートフォルダ」の下が次のようになっている
-子フォルダ1
--hoge1.txt
--hoge2.txt
-子フォルダ2
--hoge1.txt
--hoge2.txt
--hoge3.txt
-子フォルダ3
--hoge1.txt
--hoge2.txt
・・・
例えばこんな感じの場合に、別のフォルダ(Aフォルダ)にhoge#.txtを階層構造なしにコピーしてきたいのですが、複数フォルダに同名ファイルが存在する場合(例えばhoge1.txt)は「最新の更新日時のものだけ」を取り出してきてくれるような方法を探しています。
Aフォルダの下
-hoge1.txt(最新のひとつだけ)
-hoge2.txt(最新のひとつだけ)
-hoge3.txt(最新のひとつだけ)
となってほしいんです。
何かツールなりやり方がありましたら教えてください。宜しくお願いいたします。
私ならですが、なんども実行するならツールを作りますが、一度だけなら次のようにします。
(1) ファイル管理ソフト mameをインストールする。
(2) mameを立ち上げ、検索(F)で、ルートファイルから*.*を検索する。このとき、サブディレクトリも検索する設定にする。
(3) mameをもう一つたちあげ、Aディレクトリを表示させておく
(4) 検索結果が一覧で表示されるので、すべてのファイルをマウスで選択する。
(5) これをAディレクトリのmameにドラッグ&ドロップする。このとき、オプションとして最新のファイルのみコピーを選択しておく。
以上で、同じ名前なら最新のファイルが結局コピーされるでしょう。
ファイル管理ソフトですが、サブディレクトリの検索ができ、コピー時に最新のものだけをコピーするようなソフトなら同じ方法で使えるはずです。(たいていのソフトは大丈夫、FileVisorとか)
私ならですが、なんども実行するならツールを作りますが、一度だけなら次のようにします。
(1) ファイル管理ソフト mameをインストールする。
(2) mameを立ち上げ、検索(F)で、ルートファイルから*.*を検索する。このとき、サブディレクトリも検索する設定にする。
(3) mameをもう一つたちあげ、Aディレクトリを表示させておく
(4) 検索結果が一覧で表示されるので、すべてのファイルをマウスで選択する。
(5) これをAディレクトリのmameにドラッグ&ドロップする。このとき、オプションとして最新のファイルのみコピーを選択しておく。
以上で、同じ名前なら最新のファイルが結局コピーされるでしょう。
ファイル管理ソフトですが、サブディレクトリの検索ができ、コピー時に最新のものだけをコピーするようなソフトなら同じ方法で使えるはずです。(たいていのソフトは大丈夫、FileVisorとか)
ありがとうございます。
何度も定期的に実行したいんです。
そうか、同期ツールというよりファイル管理ツールを使えばいいのかもしれませんね。
バッチをどうにか作っておけばできそうな気がしてきました・・。
バッチファイルとsedが使えるなら
dir d:\src /b /s > 1.bat
で、srcディレクトリのすべてのファイルを出力し、
sedで、行頭に"xcopy "を付加し、行末に" d:\dst"を付加します。
で最後に1.bat自体を実行するバッチファイルを作ればよいかと思います。
ありがとうございます。
バッチファイルはそんなに詳しくは無い上に、小フォルダの階層が3つくらいでして。。。
しかしxcopyのオプションは色々と使えそうですね。
Windowsの標準機能だけでできます。
コマンドプロンプト(DOSプロンプト)のfor文とxcopyの組み合わせ。
for /R c:\src %f in (*.txt) do xcopy /d %f c:\dest
forの/Rで再帰呼び出しをしています。
xcopyの/dで新しいファイルだけを上書きしています。
なお、手で叩く場合は、上記でいいのですが、いつも使う場合は、バッチにしておいたほうがいいですね。
お好みでxcopyに/iをつけたり、色々オプションを指定してもいいと思います。
hogecopy.bat
for /R %1 %%f in (*.txt) do xcopy /d %%f %2
動かすとき
hogecopy C:\src C:\dest
ありがとうございました。
ちと勉強せねば・・。
ありがとうございます。
何度も定期的に実行したいんです。
そうか、同期ツールというよりファイル管理ツールを使えばいいのかもしれませんね。
バッチをどうにか作っておけばできそうな気がしてきました・・。