アプリ版:「スタンプのみでお礼する」機能のリリースについて

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) エラー) です。

A 回答 (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 で置き換えて、ログだけを残すことができる、という結論になります。

#別カテゴリに同じ趣旨の質問をされているのを、答えようと思って忘れてました。すいません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ご教示いただいたお答えで十二分に対応できました。
ありがとうございます。
今回の件に限らずファイル救出などは頻繁に行う予定ですので、役立たせていただきます。

いやしかし、ダウンロードは昨年まで遡るのですが、社内PCはネット接続ログや外部メディアへのコピーログが取られていて、いたんそれが本部の解析サーバへ送られ、仕組みはわかりませんがいかがわし動きを検出して、当該PCがある各部署の部長へ送られるというシステムが入っていたなんて初めて知りました。
ほかならぬ部長がいかがわしかったレポートを封殺していたのにも驚きです。

お礼日時:2010/05/21 21:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!