none
ROBOCOPYの失敗ファイルの特定について RRS feed

  • 質問

  • 現在、以下のオプションでROBOCOPYを実行しています。

    「/V /COPYALL /NP /XJF /XJD /R:3 /W:10 /E /PURGE /M」

    コピーが成功したファイルをログに出しつつ、失敗したファイルを特定するには

    どういった方法があるでしょうか?

    2013年10月9日 0:59

回答

  • C:\>robocopy /?

    ...

              /LOG:file :: output status to LOG file (overwrite existing log).
             /LOG+:file :: output status to LOG file (append to existing log).

           /UNILOG:file :: output status to LOG file as UNICODE (overwrite existinglog).
          /UNILOG+:file :: output status to LOG file as UNICODE (append to existinglog).

    ...

    2013年10月9日 3:05
  • なぜ、ログを見て特定しようとしないのでしょうか?
    2013年10月10日 1:20
  • コマンドプロンプト Loveな方でしたら、こんなのも

    robocopy (略) /LOG:<ファイル名> /TEE | find "抜き出したい文字"

    2013年10月10日 6:02
    モデレータ
  • >この"抜き出したい文字"に何をしたらよいのでしょうか?

    何をして失敗としようとしていますか?たとえば、同じファイル名が合ってスキップしたいファイルを取得するのであれば以下のようにして下さい。
    何を失敗とするかの定義については、バックアップや資源担当の管理者と相談してください。

    findコマンドでは条件が一つしか指定できないため複数指定したいのであればfindstrを利用してください

    robocopy (略) /LOG:<ファイル名> /V /TEE | findstr /c:"同じ"

    100%とでたものを成功とし、それ以外の行を表示

    robocopy (略) /LOG:<ファイル名> /V /TEE | find /v "100%"

    • 回答の候補に設定 佐伯玲 2013年10月15日 1:30
    • 回答としてマーク 佐伯玲 2013年10月25日 6:47
    2013年10月11日 4:46
    モデレータ
  • チャブーンです。

    /LOGオプションで「失敗したファイル名」が取れるのであれば、PowerShellでスクリプト化して、invoke-commandでrobocopyを同期的に実行し、実行終了後にget-contentで該当LOGファイルを読み込んでコレクションとし、$<LOGのコレクション>|foreach-object {IF ($_ -match "<失敗を示す文字列>") {$_}}で抽出してあげればいいのかなと。

    この方法は、目で見る代わりにスクリプトで自動化しただけで、やってることは「目で見てチェックする」と同じコンテキストになります。


    2013年10月10日 5:24
    モデレータ

すべての返信

  • C:\>robocopy /?

    ...

              /LOG:file :: output status to LOG file (overwrite existing log).
             /LOG+:file :: output status to LOG file (append to existing log).

           /UNILOG:file :: output status to LOG file as UNICODE (overwrite existinglog).
          /UNILOG+:file :: output status to LOG file as UNICODE (append to existinglog).

    ...

    2013年10月9日 3:05
  • 申し訳ございません。

    書き漏らしていましたが、「/LOG:~」はつけて実行しております。

    やはり特定は無理なのでしょうか。。。

    2013年10月10日 0:52
  • なぜ、ログを見て特定しようとしないのでしょうか?
    2013年10月10日 1:20
  • チャブーンです。

    /LOGオプションで「失敗したファイル名」が取れるのであれば、PowerShellでスクリプト化して、invoke-commandでrobocopyを同期的に実行し、実行終了後にget-contentで該当LOGファイルを読み込んでコレクションとし、$<LOGのコレクション>|foreach-object {IF ($_ -match "<失敗を示す文字列>") {$_}}で抽出してあげればいいのかなと。

    この方法は、目で見る代わりにスクリプトで自動化しただけで、やってることは「目で見てチェックする」と同じコンテキストになります。


    2013年10月10日 5:24
    モデレータ
  • コマンドプロンプト Loveな方でしたら、こんなのも

    robocopy (略) /LOG:<ファイル名> /TEE | find "抜き出したい文字"

    2013年10月10日 6:02
    モデレータ
  • 「失敗」と「成功」の判別がつくような出力ログではないような・・・

    失敗したファイルを検索できるキーワードがあるのでしょうか?

    2013年10月11日 0:34
  • >robocopy (略) /LOG:<ファイル名> /TEE | find "抜き出したい文字"

    この"抜き出したい文字"に何をしたらよいのでしょうか?

    2013年10月11日 0:39
  • >この"抜き出したい文字"に何をしたらよいのでしょうか?

    何をして失敗としようとしていますか?たとえば、同じファイル名が合ってスキップしたいファイルを取得するのであれば以下のようにして下さい。
    何を失敗とするかの定義については、バックアップや資源担当の管理者と相談してください。

    findコマンドでは条件が一つしか指定できないため複数指定したいのであればfindstrを利用してください

    robocopy (略) /LOG:<ファイル名> /V /TEE | findstr /c:"同じ"

    100%とでたものを成功とし、それ以外の行を表示

    robocopy (略) /LOG:<ファイル名> /V /TEE | find /v "100%"

    • 回答の候補に設定 佐伯玲 2013年10月15日 1:30
    • 回答としてマーク 佐伯玲 2013年10月25日 6:47
    2013年10月11日 4:46
    モデレータ
  • こんにちは、A_I_ZZZ さん
    フォーラムオペレータの佐伯 玲 です。

    その後の状況はいかがでしょうか?
    ご参考になる情報が寄せられていると思い私の方で「回答としてマーク」させていただきました。

    進展がございましたらこちらのスレッドへご返信いただけましたらと思います。


    宜しくお願い致します。

    TechNet Community Support 佐伯 玲

    2013年10月25日 6:46
  • これまでの皆様の回答をみますと、こちらの日本語の説明が拙いため、質問の意図が伝わってないようでしたが、

    Chukiさんの回答にありました「100%とでたものを成功とし」という部分をみて、

    現在の実行時のオプションから「/NP」を抜けば「失敗したファイルを特定」することができそうだと思いました。

    「/NP」オプションを外した場合の負荷と処理時間への影響がどれくらいになるかが不明なので、

    これから検討したいと思います。

    ありがとうございました。

    2013年10月31日 0:33