Get-ChildItem
ช่วยให้คุณสามารถแสดงรายการไฟล์และไดเรกทอรีรวมถึงตัวกรองชื่อซ้ำ Copy-Item
ช่วยให้คุณสามารถคัดลอกไฟล์
มีการทับซ้อนกันมากมายในแง่ของการเลือกไฟล์บ่อยครั้งCopy-Item
ที่มันจะเพียงพอแล้วขึ้นอยู่กับรายละเอียดของสิ่งที่คุณต้องการ (เช่นคุณต้องการที่จะรักษาโครงสร้างของโฟลเดอร์หรือไม่)
ในการคัดลอกทั้งหมด*.foo
และ*.bar
จาก StartFolder ไปยัง DestFolder:
Copy-Item -path "StartFolder" -include "*.foo","*.bar" -Destination "DestFolder"
หากคุณต้องการรักษาโครงสร้างของโฟลเดอร์ให้ยากขึ้นเพราะคุณจำเป็นต้องสร้างชื่อโฟลเดอร์ปลายทางสิ่งที่ชอบ:
$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
}
แต่robocopy
มีแนวโน้มที่จะง่ายขึ้น:
robocopy StartFolder DestFolder *.foo *.bar /s
ในที่สุดวิธีการเลือกจะขึ้นอยู่กับรายละเอียดของสิ่งที่จำเป็น
(ในข้างต้นฉันหลีกเลี่ยงนามแฝง (เช่นCopy-Item
มากกว่าcopy
) และใช้ชื่อพารามิเตอร์อย่างชัดเจนแม้ว่าจะเป็นตำแหน่งก็ตาม)