ค้นหาเว็บไซต์

วิธีใช้ 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”.

How do I copy the latest file from a folder in PowerShell?

To copy the latest file from a folder using PowerShell, you can use the Get-ChildItem cmdlet to retrieve the files sorted by their LastWriteTime property. Then, you can use the Copy-Item cmdlet to copy the files to your desired destination. Here is an example of the PowerShell script you can use:

#Get the latest file
$LatestFile = Get-ChildItem -Path "C:\Temp\Logs" -File | Sort-Object LastWriteTime -Descending | Select-Object -First 1
#Copy the latest file
Copy-Item -Path $LatestFile.FullName -Destination "C:\Temp\NewLogs\$($LatestFile.Name)"

ฉันจะย้ายโฟลเดอร์จากไดเร็กทอรีหนึ่งไปยังอีกไดเร็กทอรีใน PowerShell ได้อย่างไร

หากคุณต้องการย้ายโฟลเดอร์จากไดเรกทอรีหนึ่งไปยังอีกไดเรกทอรีหนึ่งใน PowerShell คุณสามารถใช้ Move-Item cmdlet

Move-Item -Path "C:\Temp\Logs" -Destination "C:\Temp\Archive\Logs"

ตรวจสอบให้แน่ใจว่าโฟลเดอร์ปลายทาง “C:\Temp\Archive” มีอยู่แล้วก่อนที่จะย้าย

วิธีคัดลอกหลายไฟล์จากไดเร็กทอรีหนึ่งไปยังอีกไดเร็กทอรีใน PowerShell

หากต้องการคัดลอกหลายไฟล์จากไดเรกทอรีหนึ่งไปยังอีกไดเรกทอรีหนึ่งใน PowerShell คุณสามารถใช้ Copy-Item cmdlet นี่คือตัวอย่างคำสั่งที่คุณสามารถใช้ได้:
Copy-Item -Path "C:\Temp\Logs\*" -Destination "C:\Temp\Logs-Archive" -Recurse -Force

ฉันจะรวมไฟล์ในหลายโฟลเดอร์ได้อย่างไร

หากคุณต้องการรวมไฟล์จากหลายโฟลเดอร์เป็นโฟลเดอร์เดียว (โดยไม่ต้องรวมไฟล์ เนื้อหาของไฟล์) คุณสามารถใช้ Copy-Item cmdlet ใน PowerShell ได้ นี่เป็นสคริปต์ง่ายๆ ที่ทำสิ่งนี้:

Copy-Item -Path C:\Temp\Logs\*,C:\Temp\Logs-Archive\* -Destination C:\Temp\AllLogs

บทความที่เกี่ยวข้อง