PowerShellのCopy-Itemコマンドレットは、ファイルやディレクトリをコピーするために使用されます。
基本的な使い方、オプション、使用例をまとめます。
基本構文
Copy-Item -Path <コピー元> -Destination <コピー先> [-Force] [-Recurse] [-Container] [-PassThru] [-Verbose]
パラメータの概要
-Path:コピーするアイテム(ファイルまたはディレクトリ)のパス。-Destination:コピー先のディレクトリまたはファイルパス。-Force:コピー先に同じ名前のファイルやディレクトリが存在する場合、上書きします。-Recurse:ディレクトリ内のすべてのファイルとサブディレクトリを再帰的にコピーします。-Container:ディレクトリ自体を含めるかどうかを制御します(既定値:含む)。-PassThru:コピーしたアイテムを返します。-Verbose:詳細な情報を表示します。
基本的な使用例
単一ファイルのコピー
特定のファイルを別のディレクトリにコピーする例です。
Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination"
このコマンドは、file.txtをC:\Destinationディレクトリにコピーします。
複数ファイルのコピー
ワイルドカードを使用して、複数のファイルを一度にコピーすることも可能です。
Copy-Item -Path "C:\Source\*.txt" -Destination "C:\Destination"
.txt拡張子を持つすべてのファイルをコピーします。
フォルダ全体のコピー
フォルダとその内容を再帰的にコピーするには、-Recurseを使用します。
Copy-Item -Path "C:\Source\Folder" -Destination "C:\Destination" -Recurse
このコマンドは、Folder内のすべてのファイルとサブフォルダを含めてコピーします。
上書きコピー(-Force)
デフォルトでは、Copy-Itemは既存のファイルを上書きしませんが、-Forceオプションを使用して強制的に上書きすることができます。
上書きコピー
Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination" -Force
C:\Destinationに同じ名前のファイルがあった場合でも、強制的に上書きします。
再帰コピー(-Recurse)
ディレクトリ全体やサブフォルダを再帰的にコピーする際には、-Recurseを使います。
ディレクトリの再帰コピー
Copy-Item -Path "C:\Source\Folder" -Destination "C:\Destination" -Recurse
この例では、Folderディレクトリのすべてのサブディレクトリやファイルを含めてコピーします。
コンテナ(-Container)
-Containerオプションは、ディレクトリをコピーするときに、その親フォルダ(コンテナ)を含めるかどうかを制御します。
デフォルトでは、コンテナは含まれます。
コンテナを含まないコピー
Copy-Item -Path "C:\Source\Folder" -Destination "C:\Destination" -Recurse -Container:$false
この例では、Folder自体はコピーされず、その中の内容のみがコピーされます。
コピーしたアイテムの確認(-PassThru)
コピーされたアイテムの情報を出力として得たい場合は、-PassThruを使用します。
コピーしたアイテムを出力
Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination" -PassThru
このコマンドは、file.txtをコピーし、その結果を出力します。
詳細な情報の表示(-Verbose)
Copy-Itemがどのファイルを処理しているかなどの詳細な情報を知りたい場合には、-Verboseオプションが役立ちます。
詳細情報を表示
Copy-Item -Path "C:\Source\Folder" -Destination "C:\Destination" -Recurse -Verbose
このコマンドは、コピー中の詳細な情報を表示しながら処理を進めます。
エラーハンドリング
Copy-Itemでエラーが発生した場合、通常はエラーメッセージが表示されて終了しますが、PowerShellのtry-catch構文を使用してエラーをキャッチし、エラーハンドリングを行うことが可能です。
エラーハンドリングの例
try {
Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination" -Force
}
catch {
Write-Host "エラーが発生しました: $_"
}
この例では、コピー中にエラーが発生した場合、カスタムメッセージが表示されます。
まとめ
Copy-ItemはPowerShellで非常に強力なコマンドレットであり、ファイルやディレクトリを効率的にコピーするためのさまざまなオプションが用意されています。単純なファイルコピーから、再帰的なディレクトリのコピー、エラーハンドリングまで、多様な場面で役立つコマンドです。
