PowerShellを使用してファイルやフォルダをコピーする際に便利なコマンドが Copy-Item
です。本記事では、Copy-Item
の基本的な使い方から、オプションを活用した応用的な方法まで詳しく解説します。ファイル管理を効率的に行いたい方や、スクリプトを活用して作業を自動化したい方は、ぜひ参考にしてください。
Copy-Item コマンドとは?
PowerShellの Copy-Item
コマンドは、ファイルやフォルダをコピーするために使用されます。WindowsのGUI操作で行う「コピー&ペースト」に相当する機能をスクリプトで実行できるため、業務の効率化に役立ちます。
基本構文
Copy-Item -Path <コピー元> -Destination <コピー先>
例えば、 C:\source\file.txt
を C:\destination\
にコピーするには、以下のように記述します。
Copy-Item -Path "C:\source\file.txt" -Destination "C:\destination\"
Copy-Itemの基本的な使い方
ファイルをコピーする
1つのファイルをコピーする場合は、以下のように実行します。
Copy-Item -Path "C:\source\file.txt" -Destination "C:\destination\"
このコマンドは file.txt
を C:\destination\
にコピーします。
フォルダごとコピーする
フォルダごとコピーするには、-Recurse
オプションを使用します。
Copy-Item -Path "C:\source" -Destination "C:\destination" -Recurse
これにより、 C:\source
フォルダの中身すべてが C:\destination
にコピーされます。
Copy-Item のオプション一覧
Copy-Item には、さまざまなオプションが用意されています。
オプション | 説明 |
---|---|
-Path | コピー元のパスを指定 |
-Destination | コピー先のパスを指定 |
-Recurse | フォルダごとコピーする際に使用 |
-Force | 読み取り専用ファイルを上書きする場合に使用 |
-PassThru | コピーしたオブジェクトを出力する |
-WhatIf | 実際には実行せず、どのような動作になるかを確認 |
-Confirm | 実行前に確認を求める |
Copy-Item の応用例
上書きを許可してコピーする
通常、Copy-Item
は既存のファイルがあるとエラーを出します。上書きしたい場合は -Force
を使います。
Copy-Item -Path "C:\source\file.txt" -Destination "C:\destination\file.txt" -Force
複数のファイルをコピーする
ワイルドカードを使って、特定の種類のファイルをまとめてコピーできます。
Copy-Item -Path "C:\source\*.txt" -Destination "C:\destination\"
このコマンドは、 C:\source
内のすべての .txt
ファイルを C:\destination
にコピーします。
実行前に確認する
コピー前に実行内容を確認したい場合は、-WhatIf
を使用します。
Copy-Item -Path "C:\source\file.txt" -Destination "C:\destination\" -WhatIf
このコマンドは、実際にはコピーせずにどのように動作するかを表示します。
サブフォルダ内のファイルのみコピーする
フォルダの構造を保たずに、ファイルだけをコピーしたい場合は -Recurse
を使いつつ -Container
を使わないようにします。
Get-ChildItem "C:\source" -Recurse | Copy-Item -Destination "C:\destination\"
この方法を使うと、フォルダの構造を無視してファイルだけが C:\destination\
にコピーされます。
Copy-Item を活用したスクリプト例
指定フォルダ内の特定拡張子のファイルをバックアップ
$source = "C:\source"
$destination = "D:\backup"
$files = Get-ChildItem -Path $source -Filter "*.log"
foreach ($file in $files) {
Copy-Item -Path $file.FullName -Destination $destination -Force
}
このスクリプトは C:\source
内の .log
ファイルを D:\backup
にコピーします。
毎日特定のフォルダをバックアップするスクリプト
タスクスケジューラと組み合わせて、毎日バックアップを実行できます。
$source = "C:\important_data"
$destination = "D:\backup\$(Get-Date -Format yyyyMMdd)"
Copy-Item -Path $source -Destination $destination -Recurse -Force
このスクリプトは C:\important_data
を D:\backup\20240303
のような日付フォルダにバックアップします。
まとめ
PowerShell の Copy-Item
コマンドは、ファイルやフォルダのコピーをスクリプトで自動化するのに非常に便利です。本記事では、基本的な使い方から応用例まで詳しく解説しました。業務の効率化にぜひ活用してみてください。