解決済み

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

  • 困ってます
  • 質問No.9426257
  • 閲覧数466
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 100% (428/428)

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

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

  • 回答No.3

ベストアンサー率 60% (162/268)

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

お礼率 100% (428/428)

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

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
たいせつな将来のこと。あえて、知らない人に聞いてみよう。

その他の回答 (全2件)

  • 回答No.2

ベストアンサー率 60% (162/268)

コンピューター カテゴリマスター
そもそもやりたいことは、
差分を時系列に保存したいということですか?

■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のオプション(アーカイブ属性)を使い、
実行の都度、
出力先フォルダーを変更して実行すればいいだろうと思います。
お礼コメント
panacon

お礼率 100% (428/428)

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

ベストアンサー率 60% (162/268)

コンピューター カテゴリマスター
差分といった場合
・フォルダー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を使います。
お礼コメント
panacon

お礼率 100% (428/428)

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

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
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


OKWAVE若者応援スペシャル企画

ピックアップ

ページ先頭へ