Get-ChildItem
memungkinkan Anda untuk membuat daftar file dan direktori, termasuk secara rekursif dengan filter nama file. Copy-Item
memungkinkan Anda untuk menyalin file.
Ada banyak tumpang tindih dalam hal memilih file, seringkali Copy-Item
dengan sendirinya sudah cukup tergantung pada detail dari apa yang Anda butuhkan (mis. Anda ingin mempertahankan struktur folder?)
Untuk menyalin semua *.foo
dan *.bar
dari StartFolder ke DestFolder:
Copy-Item -path "StartFolder" -include "*.foo","*.bar" -Destination "DestFolder"
Jika Anda perlu mempertahankan struktur folder, hal-hal menjadi lebih sulit karena Anda perlu membangun nama folder tujuan, seperti:
$sourcePath = 'C:\StartFolder'
$destPath = 'C:\DestFolder'
Get-ChildItem $sourcePath -Recurse -Include '*.foo', '*.bar' | Foreach-Object `
{
$destDir = Split-Path ($_.FullName -Replace [regex]::Escape($sourcePath), $destPath)
if (!(Test-Path $destDir))
{
New-Item -ItemType directory $destDir | Out-Null
}
Copy-Item $_ -Destination $destDir
}
Tetapi robocopy
kemungkinan akan lebih mudah:
robocopy StartFolder DestFolder *.foo *.bar /s
Pada akhirnya cara memilih akan tergantung pada perincian dari apa yang dibutuhkan.
(Dalam contoh di atas saya telah menghindari alias (misal Copy-Item
daripada copy
) dan secara eksplisit menggunakan nama parameter bahkan jika mereka posisional.)