You are currently viewing Rename File ทีละมาก ๆ

Rename File ทีละมาก ๆ

Rename File นี่เคยเขียนไปแล้วครั้งหนึ่งในเรื่อง Rename ด้วย DOS แต่ครั้งที่แล้ว ชื่อไฟล์เดิมจะตั้งมาเป็นรูปแบบเดียวกัน คือ สมมติ ไฟล์เดิม อยู่ในชื่อ xxx.jpg แล้วจะเปลี่ยนให้อยู่ในรูปแบบ YYY-xxx-zz.jpg คือคงชื่อเดิมเอาไว้ แต่อาจจะเติมชุดตัวอักษรหรือตัวเลขไปที่ข้างหน้าหรือข้างหลัง (หรือทั้งสองอย่าง) ของชื่อเดิม ซึ่งเป็นการเปลี่ยนชื่อจากชื่อเดิมที่ตั้งไว้ในรูปแบบเดียวกันชัดเจน

 แต่ถ้าชื่อไฟล์เดิมไม่ได้อยู่ในรูปแบบเดียวกันล่ะ? หมายถึง ถ้าของเดิมตั้งชื่อไฟล์รูปภาพมาสะเปะสะปะมาก จะทำอย่างไรดี? เพราะใช้วิธีเดิมไม่ได้แล้ว

ภาพตัวอย่างคงเห็นแล้วว่าแพตเทิร์นการตั้งชื่อมันกระจัดกระจายมากเกินไป

แนะนำอย่างแรก ลองหาโปรแกรมช่วยเปลี่ยนชื่อมาใช้ อย่างเช่น advancedrenamer น่าจะช่วยได้

อันนี้ต้องบอกก่อนว่าไม่ค่อยใช้ซอฟต์แวร์อื่นมาช่วยเท่าไหร่ โดยส่วนตัวยังใช้ Command Prompt เหมือนเคย เพียงแต่คราวนี้จะใช้ Excel มาช่วยในการตรวจสอบว่าเราจะเปลี่ยนชื่อเป็นอะไร อย่างไร คือแก้ชื่อใน Excel ก่อนว่าจากชื่อเก่าที่มีอยู่ จะให้ชื่อใหม่เป็นอะไร แล้วใช้ Excel สร้างคำสั่งสำหรับใช้กับ Command Prompt ไปด้วยเลย ช่วยย่นเวลาไปได้มากทีเดียว

สำหรับโจทย์ในครั้งนี้ มีคนขอให้ข่วยคิดวิธีเปลี่ยนชื่อไฟล์แผนที่ ซึ่งจะอยู่ในรูป “ระวางแผนที่ภูมิประเทศ ระวางยูทีเอ็ม มาตราส่วน แผ่น” เช่น 5136IV 7818 1:1000 1 โดยขอให้จัดรูปแบบเป็น 5136IV-7818-1000-01.pdf

เอาจริงแล้ว ปัญหาครั้งนี้ไม่ได้อยู่ที่การเปลี่ยนชื่อไฟล์ทีละมาก ๆ แต่อยู่ที่ชื่อเดิมตั้งชื่อสะเปะสะปะมาก ทำอย่างไรจะจัดรูปแบบให้มาอยู่ในรูปแบบเดียวกันให้ได้ง่าย ๆ

วิธีที่ใช้ก็คือ ใช้ Excel มาช่วยจัดชื่อใหม่!

ใช้ Excel ช่วย Rename File

ขั้นแรก ต้องลิสต์รายชื่อไฟล์ทั้งหมดที่ต้องเปลี่ยนชื่อเสียก่อน โดยส่วนตัว ใช้คำสั่ง DIR ใน Command Prompt ก็คือ

dir /b *.pdf > list.txt

คือสั่งให้เก็บรายชื่อไฟล์ในไดเร็กทอรี่นี้ในไฟล์ list.txt

(ซึ่งได้เขียนเกี่ยวกับคำสั่ง dir นี้แล้ว อ่านรายละเอียดคำสั่งนี้ได้)

เมื่อได้ลิสต์มาแล้ว ก็นำรายชื่อไฟล์ที่ได้ มาวางลงใน excel

Rename File

จากนั้นก็คือขั้นตอนยาก นั่นก็คือต้องจัดการเอาไฟล์ชื่อเดิมเป็น base แล้วเปลี่ยนให้อยู่ในรูปแบบที่ต้องการซึ่ง จากของเดิมที่มีก็มีความหลากหลาย อย่างเช่น

5044-II-3858-1-8.pdf

5044-II4052-01-4.pdf

5044II4052_1-9.pdf

5044II-4058-1-05.pdf

จากตัวอย่างจะเห็นการตั้งชื่อที่ไม่เหมือนกัน มีขีดกลางบ้าง ขีดล่างบ้าง เว้นวรรคก็มี เลขตัวท้ายก็อยากจะแปลงให้เป็น 2 หลัก เช่น 5044II4052_1-9.pdf จะต้องเป็น 5044II-4052-1000-09.pdf การจัดรูปแบบชื่อไฟล์ให้เป็นอย่างที่เราต้องการ ต้องใช้เทคนิคนิดหน่อย ถ้ามันมีไม่กี่ชื่อก็คงแนะนำให้แก้เองทีละชื่อ

แต่สำหรับจำนวน 8,5xx ชื่อแบบนี้ ถ้าต้องแก้ทีละชื่อคงเสียเวลาไม่น้อย

แนวคิดการจัดการ

หลัก ๆ คือเอา .pdf ออกไปก่อนเพื่อความสะดวก เดี๋ยวค่อยเอามาใส่กลับเข้าไปภายหลัง (แบบเดียวกับครั้งก่อน จะได้จัดการกับชื่อไฟล์ได้สะดวก) วิธีคือใช้ replace คือ แทนที่ .pdf ด้วยการไม่เติมอะไร เฉย ๆ เลย

จากนั้นดึงตัวท้ายออกมาก่อน เพราะตัวด้านหน้ายังพอแยกได้ง่าย การดึงตัวท้าย โปรดดูที่เขียนไปในเรื่อง การแยกข้อความจากด้านขวามือ

เนื่องจากการตั้งชื่อเดิม มีทั้งขีดกลาง (-) ขีดล่าง (_) เว้นวรรค ( ) ต้องกำจัดทั้งสามอย่างนี้ออกก่อน เพราะบางชื่อไม่ได้อยู่ในตำแหน่งที่ต้องการ การจะมานั่งเลือกแก้ทีละชื่อมันเสียเวลา (กรณีนี้คือมีราชชื่อไฟล์ประมาณ 8,5XX ชื่อ จะแก้แต่ละทีมันเสียเวลา) ใช้ replace ในการแก้ไขเรื่องนี้

คือแทนที่ขีดกลาง ขีดล่าง ช่องว่าง และ .pdf ไปเลย เดี๋ยวค่อยมาใส่กลับเข้าไปภายหลัง ดังนั้นตอนนี้จะได้ข้อมูลที่อยู่ในรูป 5044II4052105 บ้าง  5044II405215 บ้าง จากนั้นใช้วิธีแบ่งออกเป็นส่วน ๆ แล้วกลับมารวมกันใหม่ โดยใช้วิธี แยกตัวเลขจากตัวอักษรที่เคยเขียนไปแล้วเอามาดัดแปลง หรือลองอ่านจากการแยกข้อความจากทางด้านขวา

โปรดดูเรื่อง Text to Columns และ การแยกตัวเลขจากตัวอักษร ที่เคยเขียนไปแล้วมาประยุกต์ใช้

สุดท้ายแล้วจะได้ชื่อใหม่ตามรูปแบบที่เราต้องการ ทีนี้เราก็จะเขียนคำสั่ง dos คือ ren (หากใครยังไม่เข้าใจคำสั่งนี้ โปรดอ่านที่เคยเขียนไปแล้ว) โดยใช้สูตรใน excel ช่วย

คำสั่งที่เราต้องการคือ

ren   “ชื่อเก่า”    “ชื่อใหม่”

เรามี “ชื่อเก่า” อยู่ในคอลัมน์ A และ “ชื่อใหม่” อยู่ในคอลัมน์ B

ดังนั้นเราจะใช้วิธี รวมข้อความเข้าด้วยกัน คือ

=CONCATENATE("ren"," ",CHAR(34),A2,CHAR(34)," ",CHAR(34),B2,CHAR(34))

หรือจะใช้ & แทน Concatenate ก็ได้เหมือนกัน

Rename File

สำหรับ CHAR(34) ก็คือเครื่องหมายคำพูด (“) นั่นเอง เมื่อใส่สูตรเรียบร้อย เราก็จะได้คำสั่งสำหรับใช้กับ command prompt

Copy สิ่งที่เราได้ไปวางใน notepad และ Save เป็น ชื่อไฟล์อะไรก็ได้.bat ตรงนี้ระบุไปเลยว่าจะเซฟเป็น .bat ซึ่งเป็นตัว run command prompt แต่ถ้าเผลอเซฟเป็น .txt ไปก็ไม่เป็นไร แก้ไขภายหลังด้วยการ Rename File ธรรมดานี่เอง

เมื่อได้ไฟล์ .bat แล้ว ก็แค่เอาไปวางในโฟลเดอร์ที่ต้องการ rename ชื่อไฟล์ ดับเบิลคลิก

เสร็จ

TIPS: หรือจะ copy คำสั่งไป paste ใน command prompt ก็ได้เหมือนกัน

สำหรับบางท่านประสบปัญหาว่าใช้ตามวิธีนี้แล้ว ชื่อไฟล์ที่ได้กลายเป็นภาษาต่างดาว คาดว่าจะเป็นเพราะ encoding โปรดสังเกตตอน save notepad ให้ลองเปลี่ยนด้านล่างเป็น Ansi (หรือ UTF-8 แล้วแต่กรณี)

แต่ถ้ามีการเตรียมตัวล่วงหน้า ตั้งชื่อมีรูปแบบให้ชัดเจน อย่างตัวอย่างที่นำมาเขียนวันนี้ ถ้าจัดรูปแบบเสียตั้งแต่แรก เช่น จัดขีดกลางให้เหมือนกัน เป็นรูปแบบเดียวกัน ไม่ตั้งชื่อสะเปะสะปะมักง่ายเข้าว่าแบบนี้ ก็คงไม่ต้องเสียเวลาคิดหาทางใช้สูตรยาว ๆ ไม่ต้องเหนื่อย เสียเวลาและพลังสมองไปกับเรื่องไม่เป็นเรื่อง