palm84.com

革命的愛熊主義者同盟!

xcopy コマンドでディレクトリコピー

エクスプローラーでのコピーは大容量ファイルだと遅かったり固まったりするんでコマンドでやってるけど、Windows の copy コマンドはディレクトリだめなので...ということで。

f:id:palm84:20150525193219p:plain

一例ですが...

  • D:\hoge ディレクトリを Z:\Backup 内にコピーする
pushd d:\
xcopy hoge Z:\Backup\hoge /s/e/i
  • 基本は xcopy 元ディレクトリ 先ディレクトリ option
  • /I オプションを付けるとそのディレクトリを新規作成してくれる
  • /S/E でサブディレクトリも全部

あと注意点とか

  • 基本ですが、パスにスペースを含む場合は引用符 " で囲む
  • /H - 隠しファイル/システムファイルもコピーする
  • /Y - 上書コピー時にメッセージを出さない
C:\Users\yassy>xcopy /?
ファイルとディレクトリ ツリーをコピーします。

XCOPY コピー元 [コピー先] [/A | /M] [/D[:日付]] [/P] [/S [/E]] [/V] [/W]
                      [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
                      [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/J]
                      [/EXCLUDE:ファイル1[+ファイル2][+ファイル3]...]

  コピー元    コピーするファイル (複数可) を指定します。
  コピー先    新しいファイルの場所や名前を指定します。
  /A          アーカイブ属性が設定されているファイルのみをコピーし、
              属性は変更しません。
  /M          アーカイブ属性が設定されているファイルのみをコピーし、
              アーカイブ属性を解除します。
  /D:月-日-年 指定された日付以降に変更されたファイルをコピーします。
              日付が指定されなかったときは、コピー元の日付がコピー先の日付より
              新しいファイルだけをコピーします。
  /EXCLUDE:ファイル1[+ファイル2][+ファイル3]...
              コピーの除外対象を特定するための文字列を記述したファイルを指定
              します (複数指定可)。文字列は、1 行に 1 つずつ記述します。
              その文字列が、コピー対象ファイルの絶対パスの一部と一致した場合、
              そのファイルはコピーから除外されます。たとえば、"\obj\" という
              文字列を指定するとディレクトリ obj の下の全ファイルが除外 され
              ます。".obj" という文字列を指定すると .obj という拡張子のファ
              イルがすべて除外されます。
  /P          コピー先のファイルを作成する前に確認のメッセージを表示します。
  /S          空の場合を除いて、ディレクトリとサブディレクトリをコピーします。
  /E          ディレクトリまたはサブディレクトリが空であってもコピーします。
              "/S /E" と同じ意味です。/T の内容を変更する際にも使用できます。
  /V          コピー先の各ファイルのサイズを検証します。
  /W          コピーを開始する際に、任意のキーを押すことを求めるメッセージを
              表示します。
  /C          エラーが発生してもコピーを続けます。
  /I          指定されたコピー先が存在せず、コピーするファイルが複数の場合、
              コピー先をディレクトリとしてコピーします。
  /Q          コピー中にファイル名を表示しません。
  /F          コピー中にコピー元とコピー先の全ファイル名を表示します。
  /L          コピーされるファイル名を表示します。
  /G          暗号化をサポートしないコピー先に、暗号化されたファイルをコピー
              することを許可します。
  /H          隠しファイルやシステム ファイルもコピーします。
  /R          読み取り専用ファイルを上書きします。
  /T          ファイルはコピーせずにディレクトリ構造のみを作成します。空の
              ディレクトリまたはサブディレクトリは除きます。"/T /E" と指定
              すると空のディレクトリやサブディレクトリも作成されます。
  /U          コピー先に既に存在するファイルだけをコピーします。
  /K          属性をコピーします。指定しない場合、読み取り専用属性はリセット
              されます。
  /N          生成された短い名前を使用してコピーします。
  /O          ファイルの所有権と ACL 情報をコピーします。
  /X          ファイルの監査設定をコピーします (/O を含む)。
  /Y          既存のファイルを上書きする前に確認のメッセージを表示しません。
  /-Y         既存のファイルを上書きする前に確認のメッセージを表示します。
  /Z          再起動可能モードでネットワーク ファイルをコピーします。
  /B          シンボリック リンクのリンク先ではなく、シンボリック リンク自体を
              コピーします。
  /J          バッファーされていない I/O を使ってコピーします。サイズが大き
              いファイルに適しています。

スイッチ /Y は環境変数 COPYCMD に前もって設定しておくことができます。
この設定は、コマンド ラインの /-Y で上書きすることができます。
システムファイルなどのコピー

copyコマンドではできない、システムファイルのコピーにも使えたりします。

f:id:palm84:20150525193220p:plain

/H オプションを指定するのだ!

c:\Recovery>xcopy c:\Recovery\WindowsRE\Winre.wim d:\ /h
C:\Recovery\WindowsRE\Winre.wim
1 個のファイルをコピーしました

/F オプションを指定するとファイル名両方表示してくれるのでイイ。

c:\Recovery>xcopy c:\Recovery\WindowsRE\Winre.wim d:\ /h/f
C:\Recovery\WindowsRE\Winre.wim -> D:\Winre.wim
1 個のファイルをコピーしました

ほなでした。