【PowerShell】xcopyコマンドを使う方法

PowerShell

この記事では、PowerShellでのファイルコピーを効率化するために使われるxcopyコマンドについて説明します。

xcopyコマンドとは?

xcopyは、Windowsのコマンドプロンプト(cmd.exe)で使用されるファイルおよびディレクトリコピーのためのコマンドです。copyコマンドと比較して、より多機能で、大量のファイルや複雑なディレクトリ構造をコピーするのに適しています。

参考:
xcopy |Microsoft Learn

xcopyの基本構文

xcopy <source> <destination> [options]

<source>: コピー元のファイルまたはディレクトリ
<destination>: コピー先のディレクトリ
※<destination> を省略すると、現在のディレクトリーにコピーします
[options]: 各種オプション(省略可能)

xcopyは以下のように動作します。

コピー元 コピー先 実行動作
存在する 存在する コピー元でコピー先を上書き
存在する 存在しない コピーする
存在しない 存在する コピー先ファイルは残す

xcopyの基本的な使い方

単純なコピー

最も基本的な使い方は、ファイルやディレクトリのコピーです。
以下のコマンドは、C:\sourceディレクトリ内の全ファイルとサブディレクトリをD:\destinationにコピーします。

$source = "C:\source"
$destination = "D:\destination"

xcopy $source $destination

再帰的なコピー

/sオプションを使用すると、空のディレクトリを除くすべてのサブディレクトリを再帰的にコピーできます。

$source = "C:\source"
$destination = "D:\destination"
$xcopyOptions = "/s"

xcopy $source $destination $xcopyOptions

隠しファイルやシステムファイルのコピー

/hオプションを使用すると、隠しファイルやシステムファイルもコピーできます。

$source = "C:\source"
$destination = "D:\destination"
$xcopyOptions = "/h"

xcopy $source $destination $xcopyOptions

更新されたファイルのみをコピー

/dオプションを使用すると、指定された日付以降に変更されたファイルのみをコピーします。日付を指定しない場合、既存のファイルより新しいファイルだけがコピーされます。

$source = "C:\source"
$destination = "D:\destination"
$xcopyOptions = "/d"

xcopy $source $destination $xcopyOptions

空のディレクトリもコピー

/eオプションを使用すると、空のディレクトリも含めてコピーできます。

$source = "C:\source"
$destination = "D:\destination"
$xcopyOptions = "/e"

xcopy $source $destination $xcopyOptions

複数のオプション

オプションは複数指定することもできます。

$source = "C:\source"
$destination = "D:\destination"
$xcopyOptions = "/s /e /h"

xcopy $source $destination $xcopyOptions

このスクリプトは、C:\sourceからD:\destinationにファイルを再帰的にコピーし、空のディレクトリや隠しファイルも含めてコピーします。

エラーハンドリング

コピー中にエラーが発生した場合、エラーハンドリングを追加することも重要です。以下の例では、エラーが発生した場合にメッセージを表示します。

$source = "C:\source"
$destination = "D:\destination"
$xcopyOptions = "/s /e /h"

try {
  xcopy $source $destination $xcopyOptions
  Write-Output "コピーが成功しました。"
} catch {
  Write-Output "コピー中にエラーが発生しました: $_"
}

まとめ

今回は、PowerShellでのxcopyコマンドの基本的な使い方について説明しました。

 

タイトルとURLをコピーしました