こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

差分ファイルだけ別フォルダに保存したい

ファイルのバックアップをWindowsのコマンドを使って行いたいと思っています。元フォルダAとミラー先フォルダBの差分ファイルだけをディレクトリを作りながらフォルダCの下にコピーをしたいのですが、xcopyやrobocopyでこのような処理ができるようにコードを教えてください。
よろしくお願いします。

投稿日時 - 2018-02-06 17:36:31

QNo.9426257

困ってます

質問者が選んだベストアンサー

差分を時系列に保存したい。
また、保存先は、
いくつかのフォルダーを用意し
サイクリックに使いまわしたい。
ということであれば、添付のようなコマンドになりましょう。

投稿日時 - 2018-02-08 16:14:30

お礼

ありがとうございます。
下記のコードで上手くできました。

RD wk05 /s /q

Ren wk04 wk05
Ren wk03 wk04
Ren wk02 wk03
Ren wk01 wk02

MD wk01

robocopy C:\Users\User\Desktop\wk\wk00 C:\Users\User\Desktop\wk\wk01 /M /S

pause

投稿日時 - 2018-02-08 17:55:25

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

そもそもやりたいことは、
差分を時系列に保存したいということですか?

■2月8日
Aフォルダーに
1.txt
2.txt
3.txtがある。

これをごっそり、
Dir0フォルダーに複写する

■2月9日
1.txt の中身を書き換えた。
4.txt を新たに追加した

そこで
Dir1フォルダーに
1.txt
4.txt
を複写したい。

■2月10日
1.txt を削除した
2.txt の中身を書き換えた。
3.txt の中身を書き換えた。

そこで、
Dir2フォルダーに
2.txt
3.txt
を複写したい。

このように、差分を時系列に保存したいということであれば、
RoboCopyの /M や、/Aのオプション(アーカイブ属性)を使い、
実行の都度、
出力先フォルダーを変更して実行すればいいだろうと思います。

投稿日時 - 2018-02-08 12:11:42

お礼

HohoPapaさん
ご指摘の通りです。
これを日々の日付を入れて、コピー元とコピー先の差分を別フォルダにコピーできるコードを教えていただけますとありがたいです。
タスクにバッチプログラムを登録して毎日深夜に起動させたいと思います。10回目のフォルダの情報を削除するイメージで、リネイムで1回ずつ古い名前に変更して、新しいフォルダを追加する形に出来ればと思います。

投稿日時 - 2018-02-08 14:12:03

ANo.1

差分といった場合
・フォルダーAにあって、フォルダーBに無い
・フォルダーBにあって、フォルダーAに無い
・双方にあるものの、タイムスタンプが異なる
といったファイルが対象になるものと思います。

ともあれ、
OS標準のXCOPY、ROBOCOPYだけでは実現できないと思います。
OS標準の機能だけで、という条件となると、
ちょと手間ですし、現実的かどうか相当怪しいですが
次のような手順はどうでしょうか?

(1)フォルダーBを丸ごと複写してフォルダーBxを作成する
(2)RoboCopyで、フォルダーAとフォルダーBxを同期しながら
 ログを取得する。
 robocopy フォルダーAx フォルダーBx > d:\hogelog.txt
(3)d:\hogelog.txtをメモ帳、あるいはエクセルで加工し
 対象ファイルたちを所定のフォルダーに複写するための
 copyコマンド羅列のbatファイルを作成し
(4)このBATファイルを実行する。


私に同じ要求が起きたらVBAを使います。

投稿日時 - 2018-02-07 20:44:31

お礼

回答ありがとうございます。
いただきましたアイデアのハードルが高そうなので、下記のような構成を考えてみました。これで合っていれば、コードになるとありがたいと思います。

rem 玉突きバックアップのアイデア

rem バックアップ元A→バックアップ先B robocopy /mir

rem 差分10フォルダを削除

rem バックアップ先B→最近のファイルフォルダ  xcopy /d:○○-○○-○○

rem 差分9を差分10にリネイム
rem 差分8を差分9にリネイム
rem 差分7を差分8にリネイム
rem 差分6を差分7にリネイム
rem 差分5を差分6にリネイム
rem 差分4を差分5にリネイム
rem 差分3を差分4にリネイム
rem 差分2を差分3にリネイム
rem 差分1を差分2にリネイム
rem 最近のファイルフォルダを差分1にリネイム

rem 最新のファイルフォルダを作成

投稿日時 - 2018-02-08 09:03:46

あなたにオススメの質問