วิธีเปรียบเทียบสองโฟลเดอร์ใน PowerShell (พร้อมตัวอย่าง)
คุณสามารถใช้ไวยากรณ์ต่อไปนี้ใน PowerShell เพื่อเปรียบเทียบเนื้อหาของสองโฟลเดอร์:
$folder1 = Get-childitem "c:\users\bobbi\data1"
$folder2 = Get-childitem "c:\users\bobbi\data2"
Compare-Object $folder1 $folder2 -Property Name, Length |
Where-Object {$_.SideIndicator -eq "<="} |
ForEach-Object {
Copy-Item "c:\users\bobbi\data1\$($_.name)" -Destination "c:\users\bobbi\data3" -Force
}สมมติว่าโฟลเดอร์ชื่อ data1 มีไฟล์เดียวกันกับ data2 แต่บางไฟล์ใน data1 ได้รับการอัปเดตด้วยข้อมูลใหม่
ไวยากรณ์เฉพาะนี้จะค้นหาไฟล์ทั้งหมดใน data1 ที่แตกต่างไปจาก data2 และส่งออกไปยังโฟลเดอร์ใหม่ชื่อ data3
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ
ตัวอย่าง: วิธีเปรียบเทียบสองโฟลเดอร์ใน PowerShell
สมมติว่าเรามีสองโฟลเดอร์ต่อไปนี้ชื่อ data1 และ data2 ใน PowerShell:
เราจะเห็นว่าทั้งสองโฟลเดอร์มีไฟล์เดียวกัน แต่ความยาวของบางไฟล์จะแตกต่างกันระหว่างทั้งสองโฟลเดอร์ เนื่องจาก data1 มีข้อมูลใหม่สำหรับบางไฟล์
สมมติว่าเราต้องการระบุแต่ละไฟล์ด้วยข้อมูลใหม่ในโฟลเดอร์ชื่อ data1 จากนั้นคัดลอกแต่ละไฟล์เหล่านี้ไปยังโฟลเดอร์ใหม่ชื่อ data3 โดยอัตโนมัติ
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อดำเนินการดังกล่าว:
$folder1 = Get-childitem "c:\users\bobbi\data1"
$folder2 = Get-childitem "c:\users\bobbi\data2"
Compare-Object $folder1 $folder2 -Property Name, Length |
Where-Object {$_.SideIndicator -eq "<="} |
ForEach-Object {
Copy-Item "c:\users\bobbi\data1\$($_.name)" -Destination "c:\users\bobbi\data3" -Force
}ภาพหน้าจอต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ:
โปรดสังเกตว่าเราได้คัดลอกไฟล์ที่อัปเดตทั้งหมดไปยังโฟลเดอร์ชื่อ data3 ในตำแหน่งต่อไปนี้:
c:\users\bobbi\data3เมื่อเราเรียกใช้ dir “c:\users\bobbi\data3” เราจะสามารถดูเนื้อหาของโฟลเดอร์นี้ได้:
- player_info.txt
- task_info.txt
ไฟล์ข้อความทั้งสองนี้แสดงถึงไฟล์ทั้งสองที่มีข้อมูลใหม่ในโฟลเดอร์ชื่อ data1 เปรียบเทียบกับ data2

