เคยไหม ต้องการเปลี่ยนชื่อ Folder และหรือ File เป็นชื่อที่ต้องการ ด้วยรูปแบบการเปลี่ยนชื่อเดียวกัน ซึ่งเรามีข้อมูลอยู่แล้วว่าจะเปลี่ยนจากชื่อเดิม เป็นชื่อใหม่อะไร โดยไม่ต้องมาเปลี่ยนทีละไฟล์ ลองมาดูวิธีนี้กัน
ตัวอย่าง
มี Folder ซึ่งเป็นรหัสของชื่อคน 0001 – 0005 ในแต่ละ Folder ก็จะมีการจัดเก็บเอกสารของแต่ละคนอยู่

ต้องการเปลี่ยนชื่อ Folder และ File เป็นชื่อคนนั้น ๆ ให้รู้ว่า Folder นี้เป็นเอกสารของใคร แทนตัวเลข
ขั้นตอนที่ 1 จะต้องสร้าง list ของ file เพื่อจับคู่ว่าจะเปลียนจากชื่ออะไร เป็นชื่ออะไร โดยใช้ Excel
- คอลัมน A จะให้หัวตารางชื่อ FolderID : ใส่ชื่อ Folder ลงไป
- คอลัมน์ B จะให้หัวตารางชื่อ NewName : ใส่ชื่อที่ต้องการเปลี่ยน
- จากนั้น Save As File ตั้งชื่อ File ว่า change_file_name.csv *** ให้เลือกประเภท File เป็น CSV UTF-8 (Comma delimited) และ save ให้อยู่ใน Folder เดียวกันกับ Folder ที่กำลังทำงานอยู่


ขั้นตอนที่ 2 รันคำสั่งเพื่อให้ทำการเปลี่ยนชื่อ File ในทุก ๆ Folder
- ที่ Address bar ด้านบน พิมพ์ powershell จะปรากฎหน้าจอ Windows Powershell ที่เป็น Command line

- รันคำสั่ง โดย copy code ไปใส่ใน powershell และกด Enter
# 1. เข้าไปอ่าน file csv ที่ได้สร้างไว้
Import-Csv -Path ".\change_file_name.csv" -Encoding UTF8 | ForEach-Object {
# 2. สร้างตัวแปรเพื่อเก็บข้อมูล
$subFolder = $_.FolderID # ข้อมูลจาก col ชื่อ FolderID
$customName = $_.NewName # ข้อมูลจาก col ชื่อ NewName
$targetPath = ".\$subFolder" # ที่อยู่ของ Folder เดิม
# 3. เปลี่ยนชื่อ file และ folder
if (Test-Path -Path $targetPath) {
(Get-ChildItem -Path $targetPath -File) | ForEach-Object {
$ext = $_.Extension #แยกนามสกุลของไฟล์
# เงื่อนไขการตั้งชื่อไฟล์ใหม่ จะทำการ check เงื่อนไข และเปลี่ยนชื่อไฟล์เก็บไว้ในตัวแปร
if ($_.BaseName -match "^[^_]+_(\d+)") {
$number = $Matches[1]
$newFileName = $customName + "_" + $number + $ext
} else {
$newFileName = $customName + $ext
}
# ทำการเปลี่ยนชื่อไฟล์
Rename-Item -Path $_.FullName -NewName $newFileName -ErrorAction SilentlyContinue
} # <-- จบ Loop ของการเปลี่ยนชื่อไฟล์
# ทำการเปลี่ยนชื่อ folder
Rename-Item -Path $targetPath -NewName $customName -ErrorAction SilentlyContinue
}
}

- จะได้ folder และ file ที่มีชื่อตามที่เรากำหนดไว้ใน file excel


หากต้องการเปลี่ยนชื่อไฟล์เป็นรูปแบบอื่น ๆ สามารถ เขียน script เพื่อ ให้เป็นรูปแบบตามที่ต้องการได้เพิ่มเติม

