xcpoyコマンドでコピーエラーしたファイルの表示と保存

このQ&Aのポイント
  • コマンドプロンプトでファイルごとのコピー結果を表示しつつ、ログを残すことは可能でしょうか。
  • /Cを入れているので、コピーエラーしてもコマンドプロンプト上にはエラーを起こしたファイル名が表示されませんが、ファイル名を表示・保存させることはできるのでしょうか。
  • xcopyコマンドでデータエラー(巡回冗長検査(CRC)エラー)が発生した場合、エラーメッセージは表示・保存されないのでしょうか。
回答を見る
  • ベストアンサー

xcpoyコマンドでコピーエラーしたファイルの表示と保存をしたい

xcpoyコマンドでコピーエラーしたファイルの表示と保存をしたい xcopyで以下のオプションを指定してディレクトリごとファイルをコピーし、コピー結果をテキストファイルに保存します。Windows XP Home を使います。 社内の都合によりコピーのログは開けません。 xcopy C:\上司のエロ画像フォルダ E:\コピー先\ /D /S /E /H /C /Y /R > \\コンプライアンス委員会のNAS:\ログ.txt 質問です。 1)コマンドプロンプトでファイルごとのコピー結果を表示しつつ、ログを残すことは可能なのでしょうか。 2)/Cを入れているので、コピーエラーしてもコマンドプロンプト上にはエラーを起こしたファイル名が表示されませんが(HDの破損とかでファイル名が取れないのかもしれませんが)、ファイル名を表示・保存させることはできるのでしょうか。 3)実際に破損したHDでコピーを試したのですが、某サイトにある以下のコマンドでは、「データ エラー (巡回冗長検査 (CRC) エラー) です。」などとは表示・保存されませんでした。私が上に書いたコマンドと何か違うのでしょうか。 C:\RESCUE>xcopy /s /e /c /h g:\*.* c:\rescue データ エラー (巡回冗長検査 (CRC) エラー) です。

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

  • ベストアンサー
  • lanbavon
  • ベストアンサー率72% (61/84)
回答No.1

ご苦労お察しします。orz コマンドプロンプトでは、コマンドの正常な結果を伝達するための「標準出力」と、エラーの結果を伝達するための「標準エラー出力」というのがあります。 これをふまえて3)から回答ですが、 そのコマンド書式では、標準出力も、標準エラー出力も、画面に出力されてしまうのです。 また、単に > だけでは、標準出力だけしか渡りません。 エラー結果も含めてテキストファイルに残したい場合は、 xcopy /s /e /c /h g:\*.* c:\rescue 2>&1 log.txt とする必要があります。 某サイトと思われるところ(休刊した某運用技術雑誌の編集部がごっそり移籍して運営しているので、当方は信頼しています)を見に行きましたが、CRCエラーうんぬんは、あくまでそこでの例であって、質問者さんの環境では起きなくても不思議ではありません。 また、以前読めなかったものがそのときだけ偶然読めて、またすぐ読めなくなった、というのは、ごく稀に起こりうることです。 1)ですが、当方の知る限り、コマンドプロンプトではできません。 最近XP以降に追加できるようになったPowerShellには便利なコマンド tee があって、 xcopy /s /e /c /h g:\*.* c:\rescue 2>&1 | tee log.txt とすれば実現できます。 2)ですが、3)の例のように、エラーを起こしたものの後にどんなエラーかが記録される、ということでは駄目でしょうか? これらのことより、現状では、ご質問内容のコマンドで > を 2>&1 で置き換えて、ログだけを残すことができる、という結論になります。 #別カテゴリに同じ趣旨の質問をされているのを、答えようと思って忘れてました。すいません。

cd750closed
質問者

お礼

ご回答ありがとうございます。 ご教示いただいたお答えで十二分に対応できました。 ありがとうございます。 今回の件に限らずファイル救出などは頻繁に行う予定ですので、役立たせていただきます。 いやしかし、ダウンロードは昨年まで遡るのですが、社内PCはネット接続ログや外部メディアへのコピーログが取られていて、いたんそれが本部の解析サーバへ送られ、仕組みはわかりませんがいかがわし動きを検出して、当該PCがある各部署の部長へ送られるというシステムが入っていたなんて初めて知りました。 ほかならぬ部長がいかがわしかったレポートを封殺していたのにも驚きです。

関連するQ&A

  • batファイルのxcopyでエラー

    Windows Server2003のバックアップをbatファイルのxcopyを使って行いました。 xcopy F:\...\フォルダ名\*.* L:\BACKUP\フォルダ名 /d /e /c /k /r /h /y > L:\BACKUP\BACKUPLOG\フォルダ名.log そのとき、「コピー中にエラーが起きました。」というメッセージが表示され、正常にコピーできないサブフォルダがありました。 フォルダ名に半角括弧が含まれていることが原因でコピーできなかったと考えているのですが、そのようなことってあるのでしょうか。 しかも、エラーメッセージをほっといたら消えていたので、どこのフォルダだったかわからなくなってしまいました。 バックアップは定期的に行っているのですが、2回目以降はなぜかエラーメッセージが出てきません。 しかもログファイルは上書きされていて、「○○個のファイルがコピーされました。」という旨のメッセージしか書かれていません。 もう一度エラーメッセージを表示させてそのサブフォルダを見つける良い方法があったら、教えてください。 お願いします。

  • DOSのコピーコマンド

    このカテゴリーで良いかどうかわかりませんが、教えてください。(説明が下手ですみませんが) Cドライブのあるフォルダーの中のファイル(1つまたは複数)をDドライブにコピーするバッチファイルを作ろうと思います。 たとえばyyyyフォルダーのzzzzをコピーする場合は次のような1文です。 xcopy c:\yyyy\zzzz.* d:\ /e この時、フォルダー名にスペースがあるときはどうしたらいいのかわかりません。 たとえばc:\windows updateのようなフォルダー名の場合 xcopy c:\yyyy xxxx\zzzz.* d:\ /e では動きません(yyyyとxxxxの間にスペースがあるから)。 この場合DOSコマンドをどう書けば良いのか教えてください。

  • コマンドプロンプトの保存?

    コマンドプロンプト(winXP)を使用してファイルのコピーにチャレンジしています。 毎日AのフォルダをBフォルダへ上書きしたいのです。 xcopyを実行させる所までは理解できたのですが、全くの初心者なので、この設定を保存して、<起動すれば実行する>というプログラムにできません。 よろしくお願いします。

  • Batファイルでxcopyを実行するとループする

    BatファイルでCドライブのaaaフォルダからDドライブのaaaフォルダへファイルをコピーするxcopyの記述をしました。 xcopy c:\aaa d:\aaa /i 作成したBatファイルを実行するとループしてるのか、このコマンドが何度も繰り返され、コマンドプロンプトの×ボタンを押すまで終わりません。 コマンドプロンプトから直接xcopyを入力すると問題なくコピーされます。 どこか私の記述が間違っているのでしょうか?

  • CRCエラーファイルのコピー

    DVD-Rに保存してあるファイルをコピーしようとしたのですが、CRCエラーが発生します。ディスクのバックアップを作ろうとしても同じくエラーになります。なんとかコピーできないでしょうか?

  • CRCエラー?

    ファイル(○×.aviとおきます)をコピーしていると、 「○×.aviをコピーできません。データエラー(巡回冗長エラー(CRC))エラーです」 という表示がでて、コピーできません。 このエラーって、どういう意味なのでしょうか?

  • コピーできません。教えてください。

    PCA公益会計ソフト7のPKH6SIS_log.LDFをコピーして貼り付けると。「PKH6SIS_log.LDFをコピーできません。データエラー(巡回冗長検査(CRC)エラーです」のメッセージがでてコピーできません。 どうすればコピーできるか教えてください。よろしくお願いいたします。

  • MS-DOSのXCOPYコマンド(パラメータ付き)について

    FD起動用フロッピーでXCOPYコマンドを実行するには XCOPY XCOPY32 等の実行ファイルをFDにコピーしておけば出来ますが、 /E /C /R /H /K 等のパラメータを付けて実行すると出来ません。 まだ何かのファイルをFDにコピーしておかなければ(DLL等)出来ないと 思われますが? 教えて下さい。

  • コマンド DIRの動作について

    バッチファイルのDIRコマンドでよく分からない事が あるので、ご存知の方、ご教授願います。 あるフォルダ(仮にC:\test\とします。)の中に1行だけ記述された CSVファイルが大量にあります。 これをCOPYコマンドで1ファイルにまとめたいと思います。 しかし、そのフォルダの中にはサブディレクトリがあり、その中にも COPYコマンドの対象としたいCSVファイルがあります。 COPYコマンドはサブディレクトリまで処理対象としてくれない ようですし、サブディレクトリの数は不特定なので、どうしょうかと 困っていたら、あるWebページを見つけました。 ttp://www.fpcu.jp/dosvcmd/bbs/log/copyxcopy/4-1567.html やりたい事はまさにドンピシャで、そのページのコマンドを 自分流に書き換えつつ、完成したのが、以下のコードです。 MKDIR "C:\test2\" XCOPY "C:\test\*.csv" "C:\test2\" /E /Y for /f %%a in ('dir "C:\test\" /b') do XCOPY "C:\test\\%%a\*.csv" "C:\test2\" /E /Y COPY "C:\test2\*.csv" "C:\test2\log.csv" ※変な所で改行が入って見難くなっていたらゴメンナサイ。 上記、コードで試してみた所、WindowsXPでは問題なく動作しました。 しかし、Windows2000で試してみた所、うまく動きませんでした。 PAUSEコマンドを入れて、どんなコマンドが吐かれているのか見たら サブディレクトリを動的に変えようとしてい%%aの中に「ドライブ」 とか「ボリューム」とか入ってくるのです。最初は意味不明でしたが DIRのbオプションを付けない時に、そういう文字がコマンドプロンプト の画面に表示され、それを取得しているんじゃないかという事に 気づきました。ちなみにWindows2000でもDIR C:\test /bとやると フォルダ名、ファイル名しかコマンドプロンプトの画面には表示されません。 気づいたはいいんですが、解決方法が分かりません。 どなたか、コマンドに詳しい方、ご教授ください。 よろしくお願いします。

  • DOSコマンドのコピー完了判定

    サーバから各クライアントの共有フォルダにファイルをXCOPYでコピーしたのち、正しくコピーがされたかという確認のDOSコマンドはどのように記述すればよろしいのでしょうか? もう一点、コピー開始の前にログファイルを出力設定して、コピー完了時に出力するコマンドも教えていただきたいのですが。