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) และใช้ชื่อพารามิเตอร์อย่างชัดเจนแม้ว่าจะเป็นตำแหน่งก็ตาม)