Get-ChildItem
dosya adı filtreleriyle özyineli olarak da dahil olmak üzere dosyaları ve dizinleri listelemenizi sağlar. Copy-Item
bir dosyayı kopyalamanızı sağlar.
Dosyaları seçme konusunda çok fazla çakışma var, Copy-Item
ihtiyacınız olan ayrıntılara bağlı olarak genellikle kendi başına yeterli (örn. Klasör yapısını korumak istiyor musunuz?)
Tümünü *.foo
ve *.bar
StartFolder'dan DestFolder'a kopyalamak için:
Copy-Item -path "StartFolder" -include "*.foo","*.bar" -Destination "DestFolder"
Klasör yapısını korumanız gerekiyorsa, hedef klasör adını oluşturmanız gerektiğinden işler zorlaşır:
$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
}
Ancak robocopy
daha kolay olması muhtemeldir:
robocopy StartFolder DestFolder *.foo *.bar /s
Sonunda seçim yolu neyin gerekli olduğuna dair ayrıntılara bağlı olacaktır.
(Yukarıda takma adlardan (örn. Copy-Item
Ziyade copy
) kaçındım ve konumsal olsalar bile parametre adlarını açıkça kullandım.)