- データ復旧などでコマンドプロンプトからフォルダを丸ごとコピーしたいときは、「xcopy」というコマンドを使います。
- 例えば、「
xcopy c:\Users\username e:\data /s /e /h /i /c
」と入力すれば、c:\Users\username を e:\data として丸ごとコピーできます。 - 「/s」や「/e」などのオプションで、サブフォルダや隠しファイル、システムファイルをコピーするように指示しています。
1. Windows REの「コマンドプロンプト」
久しぶりに古いPCを起動したら、パスワードを忘れてしまいログインできなくなりました。
そこで、中の個人用データを外部メモリにコピーすることにしました。
まずは、空のUSBメモリと「回復ドライブ(Windows REを入れたUSBメモリ)」を用意します。
Amazonで購入したのですが、最近は64GBのUSBメモリでも1000円未満で買えるんですね。
Windows REは、16GBの容量があれば作成できます。
Windows PCであれば、復旧したいパソコンでなくても構いません。
今回は古いPCはWindows 7でしたが、Windows REはWindows 10のものを使いました。
パソコンに両方のUSBメモリを挿して、Windows REから起動します。
「詳細オプション」から「コマンドプロンプト」を立ち上げます。
c:, d:, などドライブを移動し、dirやcdで中身を確認します。
通常は、「回復ドライブ」自体は「x:\」です。
今回は、転送元が「c:\Users\username」、空のメモリが「e:\」でした。
パソコンによっては、ドライブ全体が暗号化されていてアクセスできないこともあります。
2. 丸ごとコピーは xcopy src dest /s /e /h /i /c
エクスプローラーのようにフォルダを丸ごとコピーしたいのですが、コマンドプロンプトの copy
コマンドは「ファイルのコピー」です。
フォルダ1全体をコピーするには、xcopy
コマンドを使います。
ファイルとディレクトリ (サブディレクトリを含む) をコピーします。
xcopy | Microsoft Learn
ただし、xcopy
コマンドでも /s オプションを付けないとサブフォルダは無視されてしまいます。
xcopy c:\Users\username e:\data /s /e /h /i /c
このコマンドでは、 “e:\data” フォルダがなければ作った上で、c:\Users\username 内のすべてのファイルをコピーします。
途中でアクセスエラーになる特殊フォルダがあれば、無視します。
転送元・転送先を間違えたらえらいことだよね。
2-1. 「アクセスは拒否されました」(xcopy)
ところが、xcopyでユーザーデータをコピーしようとしたところ、Recent, PrintHood, SendTo, Templates,「スタート メニュー」など一部のフォルダで「アクセスは拒否されました」というエラーになっていました。
これらは、Windowsのシステムが特別に管理しているフォルダやファイルで、ユーザーが直接アクセスすることを想定していないからです。
- 「Recent」フォルダには最近使ったファイルの情報が、
- 「SendTo」フォルダには送る機能で使われるショートカットがあります。
とはいえ、これらのフォルダには、ユーザーが作成したファイルは通常保存されていません。
データ移行が目的なら、コピーできなくても問題ありません。
ユーザーが実際に使っているファイルはほとんどがxcopyでコピーできるはずです。
2-2. そのほかのxcopyのよく使うオプション
xcopyのオプションで、応答を無視することもできます。
今回は、全部のデータをコピーしましたが、不要なデータを除外するとよりスムーズです。
3. フォルダごと削除したいときは rmdir /s
もし、(容量不足などで)中途半端になって、いったんフォルダごと削除したいときは、サブディレクトリも含めて削除します。
rmdir e:\data /s