วิธีใช้ PowerShell เพื่อคัดลอกโฟลเดอร์
ข้อกำหนด: คัดลอกโฟลเดอร์โดยใช้ PowerShell
วิธีคัดลอกโฟลเดอร์โดยใช้ PowerShell
การคัดลอกโฟลเดอร์ใน PowerShell เป็นข้อกำหนดทั่วไปสำหรับผู้เชี่ยวชาญด้านไอทีและผู้ดูแลระบบจำนวนมาก ช่วยให้พวกเขาสร้างการสำรองข้อมูล ย้ายข้อมูล หรือเพียงแค่จัดระเบียบไฟล์ การทำงานกับไฟล์และโฟลเดอร์จาก GUI อาจเป็นเรื่องที่น่าเบื่อเมื่อคุณต้องจัดการโฟลเดอร์ซ้ำๆ โชคดีที่เรามี PowerShell! PowerShell เป็นเครื่องมือเขียนสคริปต์ที่มีประสิทธิภาพซึ่งช่วยให้คุณสามารถทำงานต่างๆ ได้โดยอัตโนมัติ รวมถึงการคัดลอกโฟลเดอร์ คู่มือนี้จะอธิบายขั้นตอนในการคัดลอกโฟลเดอร์โดยใช้ PowerShell รวมถึงวิธีคัดลอกโฟลเดอร์และโฟลเดอร์ย่อย วิธีคัดลอกไฟล์ทั้งหมดจากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่ง ฯลฯ ไม่ว่าคุณจะเป็นผู้ใช้ PowerShell ระดับเริ่มต้นหรือมีประสบการณ์ คู่มือนี้ ให้ความรู้ที่คุณต้องการในการคัดลอกโฟลเดอร์อย่างรวดเร็วและง่ายดาย
ทำความเข้าใจพื้นฐานของโฟลเดอร์คัดลอก PowerShell
ก่อนที่จะเจาะลึกรายละเอียดวิธีใช้โฟลเดอร์คัดลอก PowerShell สิ่งสำคัญคือต้องเข้าใจไวยากรณ์พื้นฐานของ cmdlet
ไวยากรณ์ของ PowerShell copy-Item cmdlet เป็นดังนี้:
Copy-Item [-Path] <String[]> [[-Destination] <String>] [-Container] [-Force] [-Recurse] [-Filter <String>] [-Include <String[]>] [-Exclude <String[]>] [-PassThru] [-Credential <PSCredential>] [-WhatIf] [-Confirm] [<CommonParameters>]
นี่คือรายการพารามิเตอร์ที่สำคัญใน Copy-Item cmdlet
- -Path
-
พารามิเตอร์เส้นทางระบุตำแหน่งของโฟลเดอร์หรือไฟล์ที่คุณต้องการคัดลอก
- -Destination
พารามิเตอร์ปลายทางระบุตำแหน่งที่คุณต้องการคัดลอกโฟลเดอร์
- -Container
สลับเพื่อคัดลอกโครงสร้างโฟลเดอร์แต่ไม่ใช่ไฟล์ที่อยู่ภายใน
- -Force
เขียนทับไฟล์หรือโฟลเดอร์ปลายทางหากมีอยู่แล้ว
- -Recurse
คัดลอกไฟล์และโฟลเดอร์ทั้งหมดในโฟลเดอร์ที่ระบุและโฟลเดอร์ย่อย
ตัวอย่าง: PowerShell เพื่อคัดลอกโฟลเดอร์
หากต้องการคัดลอกโฟลเดอร์และเนื้อหาโดยใช้ PowerShell คุณสามารถใช้ cmdlet Copy-Item พร้อมด้วยพารามิเตอร์ -Recurse cmdlet นี้จะช่วยให้คุณสามารถคัดลอกไฟล์หรือโฟลเดอร์จากที่หนึ่งไปยังอีกที่หนึ่งได้ นี่คือไวยากรณ์พื้นฐาน:
Copy-Item -Path "SourcePath" -Destination "DestinationPath" -Recurse
ที่นี่ “SourcePath” คือเส้นทางไปยังโฟลเดอร์ที่คุณต้องการคัดลอก และ “DestinationPath” คือเส้นทางที่คุณต้องการคัดลอก ตัวอย่างเช่น หากคุณกำลังจะคัดลอกโฟลเดอร์ชื่อ "Logs" จากไดเร็กทอรี "C:\Temp" ไปยังไดเร็กทอรี "C:\Backup" คำสั่งจะมีลักษณะดังนี้:
Copy-Item -Path C:\Temp\Logs -Destination C:\Backup -Recurse
พารามิเตอร์ -Recurse บอกให้ PowerShell รวมโฟลเดอร์ย่อยทั้งหมด Copy-Item cmdlet จะสร้างโฟลเดอร์ปลายทางโดยอัตโนมัติ (คุณไม่จำเป็นต้องสร้างโฟลเดอร์ปลายทางล่วงหน้าโดยใช้ New-Item cmdlet) นี่คือเอาต์พุตสคริปต์ในโหมดรายละเอียด:
cmdlet นี้จะสร้างโฟลเดอร์ปลายทาง (“C:\Backup” ในกรณีนี้) หากไม่มีอยู่ นอกจากนี้ยังสามารถระบุประเภทไฟล์ที่ต้องการคัดลอกได้ เช่น “-รวม *.txt” เพื่อคัดลอกเฉพาะไฟล์ที่มีนามสกุล .txt เท่านั้น
PowerShell เพื่อคัดลอกโฟลเดอร์และเนื้อหา - เขียนทับที่มีอยู่
เมื่อคุณคัดลอกโฟลเดอร์โดยใช้วิธีการข้างต้น โฟลเดอร์และเนื้อหาทั้งหมดจะถูกคัดลอกไปยังปลายทาง หากโฟลเดอร์ปลายทางมีโฟลเดอร์หรือไฟล์ชื่อเดียวกันอยู่แล้ว คุณจะเห็นข้อความแสดงข้อผิดพลาด: “คัดลอกรายการ : มีรายการที่มีชื่อ
ตามค่าเริ่มต้น cmdlet นี้จะไม่เขียนทับเนื้อหา ดังนั้น หากต้องการเขียนทับไฟล์และโฟลเดอร์ในปลายทาง ให้ใช้พารามิเตอร์ -Force
Copy-Item -path "C:\Users\Username\Desktop\ExampleFolder" -Destination "D:\Backup" -Recurse -Force
สคริปต์นี้จะคัดลอกทุกไฟล์และโฟลเดอร์ย่อยในโฟลเดอร์ต้นทางไปยังโฟลเดอร์ปลายทาง นอกจากนี้ หากมีไฟล์ที่มีอยู่ในโฟลเดอร์ปลายทางซึ่งมีชื่อเดียวกันกับไฟล์ในโฟลเดอร์ต้นทาง ไฟล์เหล่านั้นจะถูกเขียนทับโดยไม่แจ้งให้ยืนยัน (เว้นแต่คุณจะระบุสวิตช์ “-confirm” เป็นอย่างอื่น)
คัดลอกโฟลเดอร์และเปลี่ยนชื่อใน PowerShell
หากคุณต้องการคัดลอกโฟลเดอร์และเนื้อหาในโฟลเดอร์ แต่ต้องการให้ชื่ออื่นแก่โฟลเดอร์ที่คัดลอก คุณสามารถใช้สคริปต์ PowerShell ต่อไปนี้:
Copy-Item -Path "C:\Users\Username\Desktop\ExampleFolder" -Destination "D:\Backup\NewFolderName" -Recurse
ในคำสั่งข้างต้น โฟลเดอร์และเนื้อหาจะถูกคัดลอกไปยังไดเรกทอรี “D:\Backup” แต่โฟลเดอร์ที่คัดลอกจะถูกตั้งชื่อด้วยชื่อใหม่ “NewFolderName” แทน “ExampleFolder”
คัดลอกไฟล์เฉพาะจากโฟลเดอร์
ตอนนี้ สมมติว่าคุณต้องการคัดลอกไฟล์หรือโฟลเดอร์ย่อยบางไฟล์ภายในโฟลเดอร์ต้นทางเท่านั้น คุณสามารถใช้ไวด์การ์ดเพื่อระบุไฟล์หรือโฟลเดอร์ที่คุณต้องการคัดลอก เช่น หากคุณต้องการคัดลอกเฉพาะไฟล์ PNG ทั้งหมดในโฟลเดอร์ต้นทาง ให้ทำดังนี้
Copy-Item "C:\Temp\*.log" -Destination "C:\Temp\Logs"
การดำเนินการนี้จะคัดลอกไฟล์ LOG ทั้งหมดในโฟลเดอร์ต้นทาง (C:\Temp) ไปยังโฟลเดอร์ปลายทาง (C:\Temp\Logs) แต่ไม่มีไฟล์หรือโฟลเดอร์ย่อยอื่น ๆ
พารามิเตอร์ที่มีประโยชน์อีกตัวคือ -Exclude ซึ่งช่วยให้คุณแยกไฟล์หรือโฟลเดอร์ย่อยบางไฟล์ออกจากสำเนาโดยใช้อักขระตัวแทน ตัวอย่างเช่น หากคุณต้องการคัดลอกไฟล์ทั้งหมดในโฟลเดอร์ต้นทาง ยกเว้นไฟล์ประเภท “*.txt”:
Copy-Item "C:\Temp\Logs\*.*" -Destination "C:\Temp\Logs\Archive" -Exclude "*.txt"
ซึ่งจะคัดลอกไฟล์ทั้งหมดในโฟลเดอร์ต้นทาง (C:\Temp\Logs) ยกเว้นไฟล์ข้อความใดๆ ไปยังโฟลเดอร์ปลายทาง (C:\Temp\Logs\Archive) ตรวจสอบให้แน่ใจว่าโฟลเดอร์ปลายทางมีอยู่แล้ว
คัดลอกโครงสร้างโฟลเดอร์ใน PowerShell
หากคุณต้องการคัดลอกโครงสร้างของโฟลเดอร์ (หมายถึงไดเรกทอรีและไดเรกทอรีย่อย แต่ไม่ใช่ไฟล์) คุณสามารถใช้ cmdlets “Get-ChildItem” และ “Copy-Item” ใน PowerShell นี่คือตัวอย่างวิธีการดำเนินการนี้:
#Parameters
$source = "C:\Temp"
$destination = "C:\Logs"
#Copy Each Folder from source to the destination
Get-ChildItem -Path $Source -Recurse | Where-Object { $_.PSIsContainer } | ForEach-Object {
$dest = Join-Path $destination $_.FullName.Substring($Source.length);
New-Item -ItemType Directory -Path $dest -Force;
}
สคริปต์นี้จะสร้างมิเรอร์ของโครงสร้างของไดเร็กทอรีต้นทางในไดเร็กทอรีปลายทาง ไม่รวมไฟล์ใดๆ
การคัดลอกไฟล์ทั้งหมดจากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่งโดยใช้ PowerShell
บางครั้ง คุณอาจต้องการคัดลอกไฟล์ทั้งหมดจากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่งเท่านั้น โดยไม่ต้องคัดลอกโฟลเดอร์ย่อย PowerShell มอบวิธีง่ายๆ ในการบรรลุเป้าหมายนี้โดยใช้ cmdlet “คัดลอกรายการ” นี่คือตัวอย่าง:
Copy-Item -Path "C:\Temp\*.*" -Destination "C:\Logs" -Force
ในตัวอย่างนี้ cmdlet “คัดลอกรายการ” ใช้เพื่อคัดลอกไฟล์ทั้งหมดจาก “ชั่วคราว” ซึ่งอยู่ที่ “C:\” ไปยัง “บันทึก” ซึ่งอยู่ที่ “C:\”
คัดลอกไดเรกทอรีไปยังคอมพิวเตอร์ระยะไกลโดยใช้ PowerShell
เป็นที่น่าสังเกตว่าคำสั่ง "คัดลอกรายการ" มีความสามารถในการคัดลอกโฟลเดอร์ไปยังคอมพิวเตอร์ระยะไกล ในการทำเช่นนั้น คุณต้องระบุเส้นทาง UNC ของโฟลเดอร์ปลายทาง ตัวอย่างเช่น หากคุณต้องการคัดลอก “ExampleFolder” จาก “C:\Users\Username\Desktop” จากระบบไฟล์ในเครื่องคอมพิวเตอร์ไปยังคอมพิวเตอร์ระยะไกลชื่อ “RemotePC” ในโฟลเดอร์ “D:\Backup” คำสั่งจะ มีลักษณะเช่นนี้:
Copy-Item -Path "C:\Users\Username\Desktop\ExampleFolder" -Destination "\\RemotePC\D$\Backup"
เคล็ดลับสำหรับการคัดลอกโฟลเดอร์ใน PowerShell
เพื่อให้มั่นใจว่าการคัดลอกโฟลเดอร์ใน PowerShell มีประสิทธิภาพ ต่อไปนี้เป็นเคล็ดลับและคำแนะนำบางประการในการทำให้การคัดลอกโฟลเดอร์ใน PowerShell ง่ายขึ้น:
- รวมการจัดการข้อผิดพลาดเพื่อจัดการกับปัญหาที่อาจเกิดขึ้นในระหว่างกระบวนการคัดลอก
- ใช้พารามิเตอร์ -WhatIf เพื่อดูว่าจะเกิดอะไรขึ้นหากคุณรันคำสั่งโดยไม่ดำเนินการจริง สิ่งนี้มีประโยชน์สำหรับการทดสอบ
- ใช้พารามิเตอร์ -Force เพื่อเขียนทับไฟล์ที่มีอยู่ในโฟลเดอร์ปลายทาง
- ใช้พารามิเตอร์ -Recurse เพื่อคัดลอกโฟลเดอร์ย่อยและเนื้อหา
- ใช้สวิตช์ -Verbose เพื่อแสดงข้อมูลโดยละเอียดเกี่ยวกับการดำเนินการที่ทำโดยคำสั่ง
- ทดสอบการดำเนินการคัดลอกกับไฟล์ชุดย่อยขนาดเล็กก่อนดำเนินการในขนาดใหญ่เพื่อให้มั่นใจในความถูกต้อง
- พิจารณาใช้พารามิเตอร์ “-ตัวกรอง” เพื่อคัดลอกไฟล์ที่ต้องการตามนามสกุลไฟล์หรือเกณฑ์อื่นๆ นอกจากนี้เรายังมีพารามิเตอร์ "-รวม" และ "-ยกเว้น"
- ตรวจสอบเส้นทางต้นทางและปลายทางเพื่อให้แน่ใจว่าถูกต้องและเข้าถึงได้
- ตรวจสอบว่าคุณมีสิทธิ์ที่จำเป็นในการคัดลอกโฟลเดอร์และไฟล์
ห่อ
ในคู่มือนี้ เราได้กล่าวถึงพื้นฐานของการคัดลอกโฟลเดอร์โดยใช้ PowerShell การใช้ PowerShell เพื่อคัดลอกโฟลเดอร์เป็นวิธีที่ง่ายและมีประสิทธิภาพในการคัดลอกไฟล์และโฟลเดอร์จากที่หนึ่งไปยังอีกที่หนึ่ง ด้วยการใช้คำสั่ง "คัดลอกรายการ" และพารามิเตอร์ต่างๆ คุณสามารถคัดลอกโฟลเดอร์และเนื้อหาไปยังตำแหน่งใดๆ บนคอมพิวเตอร์ของคุณหรือไปยังคอมพิวเตอร์ระยะไกลได้อย่างง่ายดาย ด้วยความสามารถในการคัดลอกโฟลเดอร์ที่มีชื่อต่างกัน เขียนทับไฟล์ในปลายทาง และคัดลอกโฟลเดอร์ย่อยและไฟล์ คุณจะมีเครื่องมือทั้งหมดที่คุณต้องการเพื่อทำให้งานการจัดการไฟล์ของคุณเป็นแบบอัตโนมัติ เช่น ไฟล์สำรองและโฟลเดอร์
คำถามที่พบบ่อย:
จะคัดลอกโฟลเดอร์จากไดเร็กทอรีหนึ่งไปยังอีกไดเร็กทอรีโดยใช้ PowerShell ได้อย่างไร
หากต้องการคัดลอกโฟลเดอร์จากไดเรกทอรีหนึ่งไปยังอีกไดเรกทอรีหนึ่งโดยใช้ PowerShell คุณสามารถใช้ Copy-Item cmdlet นี่คือตัวอย่างคำสั่งที่คุณสามารถใช้ได้:
Copy-Item -Path "C:\AppLogs\Logs" -Destination "C:\Archive\Logs" -Recurse
This script will copy the Folder “Logs” from the source directory “C:\AppLogs” to the destination directory “Logs” in “C:\Archive”.

