จะเปลี่ยนชื่อโฟลเดอร์ใน PowerShell ได้อย่างไร?
การเปลี่ยนชื่อโฟลเดอร์หรือไฟล์เป็นงานประจำที่เรามักต้องทำขณะทำงานกับไฟล์และโฟลเดอร์ การเปลี่ยนชื่อโฟลเดอร์ด้วยตนเองอาจดูเหมือนเป็นงานที่รวดเร็ว แต่การเปลี่ยนชื่อโฟลเดอร์และไดเร็กทอรีด้วยตนเองอาจเป็นเรื่องที่น่าเบื่อและใช้เวลานาน โดยเฉพาะอย่างยิ่งหากคุณมีจำนวนมากหรือคุณต้องดำเนินการเป็นประจำ นั่นเป็นเหตุผลที่ฉันหันมาใช้ PowerShell! PowerShell มอบวิธีที่ง่ายและมีประสิทธิภาพในการเปลี่ยนชื่อโฟลเดอร์ ในบทความนี้ เราจะพูดถึงวิธีการต่างๆ ในการเปลี่ยนชื่อโฟลเดอร์โดยใช้ PowerShell เราจะกล่าวถึงวิธีการเปลี่ยนชื่อโฟลเดอร์เดียว เปลี่ยนชื่อหลายโฟลเดอร์โดยใช้ไวด์การ์ด และการเปลี่ยนชื่อโฟลเดอร์โดยใช้นิพจน์ทั่วไป
ข้อมูลเบื้องต้นเกี่ยวกับโฟลเดอร์เปลี่ยนชื่อ PowerShell
ใน PowerShell การเปลี่ยนชื่อโฟลเดอร์ทำได้โดยใช้ Rename-Item cmdlet cmdlet นี้เปลี่ยนชื่อของโฟลเดอร์ที่ระบุ การเปลี่ยนชื่อโฟลเดอร์หรือไดเร็กทอรีใน PowerShell เป็นหลักเหมือนกับการเปลี่ยนชื่อไฟล์ เมื่อคุณเปลี่ยนชื่อโฟลเดอร์ คุณกำลังเปลี่ยนชื่อโฟลเดอร์ แต่ไม่ใช่เนื้อหาในโฟลเดอร์ ไฟล์และโฟลเดอร์ย่อยทั้งหมดภายในโฟลเดอร์จะยังคงเหมือนเดิม ไวยากรณ์พื้นฐานสำหรับ cmdlet เปลี่ยนชื่อรายการเป็นดังนี้:
Rename-Item [-Path*] <String> [-NewName*] <String> [-Confirm] [-Credential <PSCredential>] [-Force] [-PassThru][-UseTransaction] [-WhatIf] [<CommonParameters>]
การเปลี่ยนชื่อโฟลเดอร์เดียวใน PowerShell
จะเปลี่ยนชื่อโฟลเดอร์ใน PowerShell ได้อย่างไร? มีหลายวิธีในการบรรลุเป้าหมายนี้ แต่วิธีที่ง่ายที่สุดคือการใช้ Rename-Item cmdlet หากต้องการเปลี่ยนชื่อโฟลเดอร์เดียว คุณต้องใช้ cmdlet Rename-Item ตามด้วยเส้นทางของโฟลเดอร์ที่คุณต้องการเปลี่ยนชื่อและชื่อใหม่ที่คุณต้องการตั้งให้กับโฟลเดอร์ ลองพิจารณาตัวอย่างที่เราต้องการเปลี่ยนชื่อโฟลเดอร์ชื่อ "Project 001" เป็น "Project One" คำสั่งในการเปลี่ยนชื่อโฟลเดอร์จะเป็น:
Rename-Item -path "C:\Project 001" -NewName "Project One"
ในคำสั่งนี้ -Path ระบุเส้นทางไดเรกทอรีไปยังโฟลเดอร์ที่คุณต้องการเปลี่ยนชื่อ ในขณะที่ -NewName กำหนดชื่อใหม่สำหรับโฟลเดอร์ หากคุณใช้คอนโซล PowerShell เพื่อเปลี่ยนชื่อโฟลเดอร์ คุณต้องนำทางไปยังไดเร็กทอรีที่มีโฟลเดอร์นั้นอยู่ก่อน จากนั้น พิมพ์คำสั่งต่อไปนี้:
Rename-Item -Path "old_folder_name" -NewName "new_folder_name"
แทนที่ “old_folder_name” ด้วยชื่อปัจจุบันของโฟลเดอร์ และแทนที่ “new_folder_name” ด้วยชื่อใหม่ที่คุณต้องการตั้งให้กับโฟลเดอร์ เมื่อเสร็จแล้วให้กด Enter จากนั้นโฟลเดอร์จะถูกเปลี่ยนชื่อ มันง่ายมาก!
Rename-Item สามารถใช้สำหรับการเปลี่ยนชื่อไฟล์และรีจิสตรีคีย์ได้เช่นกัน นี่คืออีกโพสต์เกี่ยวกับการเปลี่ยนชื่อไฟล์ใน PowerShell:
Rename-Item -Path "C:\Logs\AppLog.txt" -NewName "Old-AppLog.txt"
เพิ่มเติมที่นี่: วิธีเปลี่ยนชื่อไฟล์โดยใช้ PowerShell
การเปลี่ยนชื่อหลายโฟลเดอร์โดยใช้ Wildcards
Rename-Item cmdlet เหมาะสำหรับการเปลี่ยนชื่อโฟลเดอร์ทีละโฟลเดอร์ แต่จะเกิดอะไรขึ้นหากคุณมีโฟลเดอร์หลายร้อยหรือหลายพันโฟลเดอร์ที่จะเปลี่ยนชื่อ ในกรณีนั้น คุณจะต้องใช้แนวทางอัตโนมัติมากกว่านี้ วิธีหนึ่งในการเปลี่ยนชื่อโฟลเดอร์โดยอัตโนมัติคือการใช้คำสั่งแบบมีเงื่อนไขและไวด์การ์ด คำสั่งแบบมีเงื่อนไขช่วยให้คุณสามารถระบุเงื่อนไขที่ต้องปฏิบัติตามก่อนที่จะเปลี่ยนชื่อโฟลเดอร์ อักขระตัวแทน * ตรงกับอักขระหรือสตริงอักขระใดๆ ตัวอย่างเช่น คุณสามารถใช้คำสั่งแบบมีเงื่อนไขเพื่อเปลี่ยนชื่อโฟลเดอร์ทั้งหมดที่มีคำสำคัญเฉพาะในชื่อได้
ต่อไปนี้คือตัวอย่างวิธีใช้คำสั่งแบบมีเงื่อนไขเพื่อเปลี่ยนชื่อโฟลเดอร์ที่มีคำหลักเฉพาะ:
Get-ChildItem -Path "C:\Projects" -Directory |
ForEach-Object {
if ($_.Name -match "keyword") {
Rename-Item -Path $_.FullName -NewName ($_.Name -replace "keyword", "new_keyword")
}
}
ในตัวอย่างนี้ เราใช้ Get-ChildItem cmdlet เพื่อดึงข้อมูลรายการไดเรกทอรีทั้งหมดในโฟลเดอร์ “C:\Projects” จากนั้นเราใช้ ForEach-Object cmdlet เพื่อวนซ้ำแต่ละไดเรกทอรี และใช้คำสั่งแบบมีเงื่อนไขเพื่อตรวจสอบว่าชื่อไดเรกทอรีมีคำหลัก “คำหลัก” หรือไม่ หากเป็นเช่นนั้น เรากำลังใช้ Rename-Item cmdlet เพื่อแทนที่ “keyword” ด้วย “new_keyword”
มาเปลี่ยนชื่อแต่ละโฟลเดอร์จากโฟลเดอร์ที่กำหนดโดยเพิ่มคำนำหน้าลงไป!
#Parameters
$FolderPath ="C:\Projects"
$Prefix ="Archive_"
#Rename each folder by adding a Prefix to its name
Get-ChildItem -Path $FolderPath -Directory | ForEach-Object {
Rename-Item -Path $_.FullName -NewName ($Prefix + $_.Name)
}
ตอนนี้ลองพิจารณาตัวอย่างที่เราต้องการเปลี่ยนชื่อโฟลเดอร์ทั้งหมดในไดเร็กทอรีที่มีคำว่า "ทดสอบ" คำสั่งในการเปลี่ยนชื่อโฟลเดอร์ดังกล่าวทั้งหมดเป็น “Test1” จะเป็น:
Get-ChildItem -Path "C:\Test\*" -Directory | Where-Object { $_.Name -like "*Test*" } | Rename-Item -NewName { $_.Name -replace "Test", "Test1" }
ในคำสั่งนี้ เราใช้ Get-ChildItem cmdlet เพื่อรับรายการทั้งหมดในไดเร็กทอรีที่ระบุโดยพาธ “C:\Test*” จากนั้นเราใช้ Where-Object cmdlet เพื่อเลือกเฉพาะโฟลเดอร์ที่มีคำว่า “Test” จากนั้นเราใช้ตัวดำเนินการแทนที่เพื่อตั้งชื่อใหม่ของรายการ สุดท้ายนี้ เราใช้ Rename-Item cmdlet เพื่อเปลี่ยนชื่อโฟลเดอร์ที่เลือกเป็น “Test1”
การเปลี่ยนชื่อโฟลเดอร์โดยใช้นิพจน์ทั่วไป
นิพจน์ทั่วไปคือรูปแบบที่อธิบายชุดของสตริง คุณสามารถใช้นิพจน์ทั่วไปเพื่อเลือกและจัดการข้อความใน PowerShell ลองพิจารณาตัวอย่างที่เราต้องการเปลี่ยนชื่อโฟลเดอร์ที่มีรูปแบบเฉพาะในชื่อ เช่น โฟลเดอร์ 1, โฟลเดอร์ 2, โฟลเดอร์ 3 ฯลฯ และคุณต้องการเปลี่ยนชื่อเป็น โฟลเดอร์ใหม่ 1, โฟลเดอร์ใหม่ 2, โฟลเดอร์ใหม่ 3 เป็นต้น ในกรณีนี้ เราสามารถใช้นิพจน์ทั่วไปเพื่อเลือกโฟลเดอร์ที่เราต้องการเปลี่ยนชื่อได้ คำสั่งในการเปลี่ยนชื่อโฟลเดอร์ที่ตรงกับนิพจน์ทั่วไปคือ:
$FolderPath = "C:\Test"
$Pattern = 'Folder (\d+)$'
$Replacement = 'New Folder $1'
Get-ChildItem -Path $FolderPath -Directory | Where-Object { $_.Name -match $Pattern } |
ForEach-Object {
$NewName = $_.Name -replace $Pattern, $Replacement
Rename-Item -Path $_.FullName -NewName $NewName
}
ในคำสั่งนี้ เราใช้ Get-ChildItem cmdlet เพื่อรับรายการทั้งหมดในไดเร็กทอรีที่ระบุโดยพาธ “C:\Test” จากนั้นเราใช้ Where-Object cmdlet เพื่อเลือกเฉพาะโฟลเดอร์ที่ตรงกับนิพจน์ทั่วไป “Folder (\d+)$” สุดท้ายนี้ เราใช้ Rename-Item cmdlet เพื่อเปลี่ยนชื่อโฟลเดอร์ที่เลือกโดยแทนที่นิพจน์ทั่วไปที่ตรงกันด้วย "โฟลเดอร์ใหม่ $1"
ย้ายโฟลเดอร์และเปลี่ยนชื่อใน PowerShell
การเปลี่ยนชื่อโฟลเดอร์แตกต่างจากการย้ายโฟลเดอร์ หากต้องการย้ายและเปลี่ยนชื่อโฟลเดอร์ คุณต้องใช้ cmdlet Move-Item นี่คือตัวอย่างวิธีการเปลี่ยนชื่อโฟลเดอร์:
Move-Item -Path "C:\SourceFolder" -Destination "C:\RenamedFolder"
คำสั่งนี้จะเปลี่ยนชื่อโฟลเดอร์ 'SourceFolder' ที่อยู่ใน C: เป็น 'RenamedFolder'
การใช้วิธี Substring เพื่อเปลี่ยนชื่อโฟลเดอร์โดยใช้ PowerShell
อีกวิธีในการเปลี่ยนชื่อโฟลเดอร์คือการใช้วิธี Substring วิธีการสตริงย่อยส่งกลับจำนวนอักขระที่ระบุจากสตริง ลองพิจารณาตัวอย่างที่เราต้องการเปลี่ยนชื่อโฟลเดอร์ที่มีชื่อยาวเกินความยาวที่กำหนด ในกรณีนี้เราสามารถใช้วิธี Substring เพื่อเลือกอักขระ n ตัวแรกของชื่อโฟลเดอร์ คำสั่งในการเปลี่ยนชื่อโฟลเดอร์จะเป็น:
Get-ChildItem -Path "C:\Test" -Directory | Where-Object { $_.Name.Length -gt 10 } | Rename-Item -NewName { $_.Name.Substring(0, 10) }
ในคำสั่งนี้ เราใช้ Get-ChildItem cmdlet เพื่อรับรายการทั้งหมดในไดเร็กทอรีที่ระบุโดยพาธ “C:\Test” จากนั้นเราใช้ Where-Object cmdlet เพื่อเลือกเฉพาะโฟลเดอร์ที่มีชื่อยาวเกิน 10 ตัวอักษร สุดท้ายนี้ เราใช้ Rename-Item cmdlet พร้อมอินพุตไปป์ไลน์เพื่อเปลี่ยนชื่อโฟลเดอร์ที่เลือกโดยเลือกอักขระสิบตัวแรกของชื่อโฟลเดอร์
การจัดการข้อผิดพลาดขณะเปลี่ยนชื่อโฟลเดอร์ด้วย PowerShell
หนึ่งในความท้าทายของการเปลี่ยนชื่อโฟลเดอร์อัตโนมัติด้วย PowerShell คือการจัดการข้อผิดพลาด หากมีสิ่งผิดปกติเกิดขึ้นระหว่างกระบวนการเปลี่ยนชื่อ คุณจะต้องได้รับแจ้งเพื่อให้ดำเนินการแก้ไขได้
ในการจัดการข้อผิดพลาดใน PowerShell คุณสามารถใช้คำสั่ง Try-Catch คำสั่ง Try-Catch ช่วยให้คุณสามารถระบุสิ่งที่จะเกิดขึ้นหากคำสั่งเฉพาะหรือชุดคำสั่งล้มเหลว คุณสามารถใช้เพื่อบันทึกข้อผิดพลาด แสดงข้อความแสดงข้อผิดพลาด หรือดำเนินการแก้ไขอื่นๆ
ต่อไปนี้คือตัวอย่างวิธีใช้คำสั่ง Try-Catch เพื่อจัดการกับข้อผิดพลาดขณะเปลี่ยนชื่อโฟลเดอร์:
$directories = Get-ChildItem -Path "C:\Projects" -Directory
foreach ($directory in $directories) {
try {
if ($directory.Name -match "keyword") {
$newName = $directory.Name -replace "keyword", "new_keyword"
Rename-Item -Path $directory.FullName -NewName $newName -ErrorAction Stop
}
}
catch {
Write-Host "Error renaming folder $($directory.FullName): $_"
}
}
ในตัวอย่างนี้ เราใช้คำสั่ง Try-Catch เพื่อจัดการกับข้อผิดพลาดที่อาจเกิดขึ้นขณะเปลี่ยนชื่อโฟลเดอร์ หากมีข้อผิดพลาดเกิดขึ้น catch block จะบันทึกข้อความแสดงข้อผิดพลาดไปยังคอนโซล ด้วยวิธีนี้ คุณสามารถระบุและแก้ไขปัญหาใดๆ ที่เกิดขึ้นระหว่างกระบวนการเปลี่ยนชื่อโฟลเดอร์ได้อย่างรวดเร็ว
การเปลี่ยนชื่อโฟลเดอร์หากมีอยู่แล้วใน PowerShell
ความท้าทายทั่วไปอีกประการหนึ่งเมื่อเปลี่ยนชื่อโฟลเดอร์ด้วย PowerShell คือการจัดการกับรายการที่ซ้ำกัน หากคุณพยายามเปลี่ยนชื่อโฟลเดอร์เป็นชื่อที่มีอยู่แล้ว PowerShell จะแสดงข้อผิดพลาด “เปลี่ยนชื่อรายการ: ไม่สามารถสร้างไฟล์ได้เมื่อไฟล์นั้นมีอยู่แล้ว” สิ่งนี้อาจทำให้หงุดหงิด โดยเฉพาะอย่างยิ่งหากคุณเปลี่ยนชื่อโฟลเดอร์จำนวนมาก
เพื่อหลีกเลี่ยงปัญหานี้ คุณสามารถใช้ Test-Path cmdlet เพื่อตรวจสอบว่ามีโฟลเดอร์อยู่แล้วก่อนที่จะพยายามเปลี่ยนชื่อหรือไม่ หากมีโฟลเดอร์อยู่ คุณสามารถเพิ่มส่วนต่อท้ายให้กับชื่อใหม่ได้เพื่อหลีกเลี่ยงไม่ให้ซ้ำกัน
ต่อไปนี้เป็นตัวอย่างวิธีการเปลี่ยนชื่อโฟลเดอร์หากมีอยู่ใน PowerShell:
#Parameters
$OldFolder = "C:\Projects\Platinum"
$NewFolder ="C:\Projects\Platinum71k"
$counter = 0
$FinalFolder= $NewFolder
#Check if the New Folder Already Exits
while (Test-Path $finalFolder) {
$counter++
#Append ($Counter) to the Folder Name
$FinalFolder = "$NewFolder ($counter)"
}
#Rename Folder
Rename-Item -Path $OldFolder -NewName (Split-Path -Path $FinalFolder -Leaf)
ในตัวอย่างนี้ เราใช้ Test-Path cmdlet เพื่อตรวจสอบว่ามีโฟลเดอร์ที่มีชื่อใหม่อยู่แล้วหรือไม่ หากเป็นเช่นนั้น เราจะเพิ่มตัวเลขต่อท้ายชื่อใหม่เพื่อหลีกเลี่ยงไม่ให้ซ้ำกัน ตัวอย่างเช่น หากมีโฟลเดอร์ชื่อ “Platinum71k” อยู่แล้ว เราจะเปลี่ยนชื่อโฟลเดอร์ใหม่เป็น “Platinum71k (1)”
แนวทางปฏิบัติที่ดีที่สุดสำหรับการเปลี่ยนชื่อโฟลเดอร์ด้วย PowerShell
ตอนนี้เราได้ครอบคลุมพื้นฐานของการเปลี่ยนชื่อโฟลเดอร์ด้วย PowerShell แล้ว เรามาดูแนวทางปฏิบัติที่ดีที่สุดบางประการที่ควรคำนึงถึง:
- ทดสอบสคริปต์ของคุณบนโฟลเดอร์ชุดเล็กๆ ก่อนรันบนชุดข้อมูลขนาดใหญ่เสมอ
- ใช้คำสั่งแบบมีเงื่อนไขเพื่อกำหนดเป้าหมายโฟลเดอร์หรือไดเร็กทอรีเฉพาะ
- ใช้คำสั่ง Try-Catch เพื่อจัดการกับข้อผิดพลาดและบันทึกไว้เพื่อใช้อ้างอิงในอนาคต ตรวจสอบให้แน่ใจว่าคุณจัดการกับข้อผิดพลาดทั่วไปและหลีกเลี่ยงการทำซ้ำ เช่น. ตรวจสอบว่ามีโฟลเดอร์ต้นทางอยู่หรือไม่ก่อนที่จะเปลี่ยนชื่อ มิฉะนั้น คุณจะเห็นข้อความแสดงข้อผิดพลาด “เปลี่ยนชื่อ-รายการ : ไม่สามารถเปลี่ยนชื่อได้เนื่องจากไม่มีรายการที่ 'AppLog'”
- ใช้ชื่อโฟลเดอร์ที่สื่อความหมายและมีความหมายเสมอ
- หลีกเลี่ยงการใช้อักขระพิเศษหรือคำสงวนในชื่อโฟลเดอร์
- สำรองข้อมูลของคุณก่อนเรียกใช้สคริปต์อัตโนมัติ
โดยการปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดเหล่านี้ คุณสามารถมั่นใจได้ว่ากระบวนการเปลี่ยนชื่อโฟลเดอร์ของคุณมีประสิทธิภาพ ประสิทธิผล และปราศจากข้อผิดพลาด
บทสรุป
การเปลี่ยนชื่อโฟลเดอร์และไดเร็กทอรีอาจเป็นงานที่น่าเบื่อและใช้เวลานาน แต่ด้วย PowerShell คุณไม่จำเป็นต้องเปลี่ยนชื่อดังกล่าว ในบทความนี้ เราได้กล่าวถึงวิธีการต่างๆ ในการเปลี่ยนชื่อโฟลเดอร์โดยใช้ PowerShell เราได้กล่าวถึงวิธีการเปลี่ยนชื่อโฟลเดอร์เดียว เปลี่ยนชื่อหลายโฟลเดอร์โดยใช้ไวด์การ์ด และเปลี่ยนชื่อโฟลเดอร์โดยใช้นิพจน์ทั่วไป นอกจากนี้เรายังสำรวจวิธีการใช้วิธี Substring เพื่อเปลี่ยนชื่อโฟลเดอร์ PowerShell มอบวิธีการเปลี่ยนชื่อโฟลเดอร์ที่มีประสิทธิภาพและยืดหยุ่น ทำให้เป็นเครื่องมือที่มีประโยชน์ในการจัดการไฟล์และโฟลเดอร์ในระบบของคุณ
และอย่าลืมทดสอบสคริปต์ของคุณกับชุดข้อมูลขนาดเล็กทุกครั้งก่อนที่จะรันสคริปต์เหล่านั้นในโฟลเดอร์จำนวนมาก ยินดีเปลี่ยนชื่อ!
คำถามที่พบบ่อย:
ฉันจะเปลี่ยนชื่อโฟลเดอร์และไฟล์ใน PowerShell ได้อย่างไร
หากต้องการเปลี่ยนชื่อโฟลเดอร์หรือไฟล์โดยใช้ PowerShell คุณสามารถใช้ Rename-Item cmdlet นี่คือตัวอย่างวิธีการ:
Rename-Item -Path "C:\Old-File-or-Folder-Name" -NewName "New-FIle-or-Folder-Name"
Supply the path of the item to “path”, New item name for “NewName” parameters.
