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

จะเปลี่ยนชื่อโฟลเดอร์ใน 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.

How to rename a folder using the command line (CMD)?

In the Command Prompt (cmd.exe) on Windows, you can use the ren (or rename) command to rename a folder. Here’s an example:
Ren "C:\OldFolderName" "NewFolderName"

ฉันจะเปลี่ยนชื่อไฟล์ทั้งหมดในโฟลเดอร์ที่มีคำนำหน้าได้อย่างไร

คุณสามารถเพิ่มคำนำหน้าให้กับไฟล์ทั้งหมดในโฟลเดอร์ได้โดยใช้ cmdlets Get-ChildItem และ Rename-Item พร้อมกันในไปป์ไลน์ ด้านล่างนี้เป็นตัวอย่าง:

Get-ChildItem "C:\Temp\Logs\New*" -File | ForEach-Object { Rename-Item -Path $_.FullName -NewName ("Archive_" + $_.Name) }

คุณจะจัดการพื้นที่ในเส้นทางใน PowerShell อย่างไร

ใน PowerShell หากเส้นทางมีช่องว่าง คุณจะต้องใส่เส้นทางด้วยเครื่องหมายคำพูดคู่ นี่คือตัวอย่าง:

Get-ChildItem "C:\Some Folder\Some File.txt"

ฉันจะเปลี่ยนไดเร็กทอรีทำงานในสคริปต์ PowerShell ได้อย่างไร

หากต้องการเปลี่ยนไดเร็กทอรีทำงานในสคริปต์ PowerShell คุณสามารถใช้คำสั่ง "Set-Location" หรือ "cd" ตามด้วยเส้นทางของไดเร็กทอรีที่คุณต้องการนำทางไป ตัวอย่างเช่น หากต้องการเปลี่ยนเป็นไดเรกทอรี “C:\MyFolder” คุณสามารถใช้คำสั่ง “Set-Location C:\MyFolder” หรือ “cd C:\MyFolder”

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

หากต้องการย้ายไฟล์ไปยังไดเร็กทอรีใหม่ใน PowerShell คุณสามารถใช้ Move-Item cmdlet นี่คือตัวอย่างวิธีการ:

Move-Item -Path "C:\Temp\AppLog.txt" -Destination "C:\Scripts\"

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