Rename ด้วย dos เป็นเรื่องง่าย ๆ และใช้ประโยชนได้ดีมากเวลาเวลาใช้ในลักษณะทำในปริมาณมาก โดยที่ไม่มีซอฟต์แวร์อื่นช่วย สำหรับดอส (DOS หรือ MS-DOS) เป็นเรื่องพื้นฐานที่ควรเรียนรู้เอาไว้บ้าง เพราะหลายเรื่องแค่ใช้คำสั่งดอสก็ช่วยได้แล้ว เช่นการใช้เปลี่ยนชื่อไฟล์หลาย ๆ ไฟล์เป็นต้น
ได้รับโจทย์มาว่า “เก็บไฟล์ภาพไว้จำนวนหนึ่งในโฟลเดอร์เดียวกัน ต้องการเปลี่ยนชื่อภาพเหล่านั้นพร้อมกันจะทำอย่างไร”
เรื่องนี้ก็ต้องทำความเข้าใจก่อนว่าได้มีการ organized หรือจัดการชื่อไฟล์เป็นระบบหรือเปล่า ถ้าจัดชื่อไฟล์เป็นระบบการแก้ไขด้วยคำสั่ง ren หรือ rename ใน dos นั้นง่ายมาก
Rename ด้วย Dos
รูปแบบคำสั่งไม่มีอะไรมาก (อ้างอิงจาก https://web.csulb.edu/~murdock/rename.html)
RENAME [drive:][path][directoryname1 | filename1] [directoryname2 | filename2]
หรือ
REN [drive:][path][directoryname1 | filename1] [directoryname2 | filename2]
จะใช้อันไหนก็ได้เหมือนกัน
โอเค เขียนเป็นรูปแบบไวยากรณ์แบบนี้อาจจะยังไม่เข้าใจ ลองมาดูตัวอย่างกัน สมมติว่าตั้งชื่อไดร์ฟ C ไว้ว่า Aloha แต่อยากจะเปลี่ยนชื่อไดร์ฟ C ให้เป็น BatCave แบบนี้ก็ใช้คำสั่ง dos แบบนี้
rename c:\ Aloha BatCave
คำสั่งนี้จะเปลี่ยนชื่อโฟลเดอร์ Aloha ในไดร์ฟ C ให้เป็นชื่อ BatCave
อธิบายง่าย ๆ เลยคือ หลังคำสั่ง ren จะเป็นชื่อ(path) เดิมที่มีอยู่แล้ว โดยเราต้องระบุว่า ของเดิมที่ต้องการเปลี่ยนคืออะไร วรรคหน่อยหนึ่ง แล้วตามด้วยชื่อที่จะเปลี่ยน
การเปลี่ยนนี้จะเปลี่ยนในจุดไหนก็ได้ เช่นการเปลี่ยนนามสกุลไฟล์จาก .txt ให้เป็น .bat ก็ทำได้โดยใช้คำสั่ง
ren *.txt *.bat
ตัว * จะทำหน้าที่ wildcard หรือตัวที่บอกว่า เอาทั้งหมดนะ ทุกไฟล์ที่อยู่ในนี้ หากมีนามสกุลเป็น .txt ให้เปลี่ยนเป็น .bat ให้หมด ใส่แบบนี้ ตัวที่เป็นนามสกุลอื่น เช่น .tif .docx .xlsx จะไม่ได้รับผลกระทบในการเปลี่ยนชื่อไปด้วย
หรือถ้าเราต้องการเติม Prefix (เรียกซะเท่ คือเติมชื่อใดชื่อหนึ่งเข้าไปข้างหน้าชื่อเดิมนั่นแหละ) เข้าไปในทุกไฟล์ที่อยู่ในโฟลเดอร์นี้ เช่น อยากเปลี่ยนทุกไฟล์ให้ขึ้นต้นด้วย DR_ ก็ใช้คำสั่งนี้
ren * DR_*
ดอกจันทร์แรก (*) จะทำหน้าที่เป็น wildcard บอกว่าให้จัดการกับทุกชื่อ ตามด้วยวรรค และ ชื่อที่ต้องการให้เปลี่ยน ซึ่งเราจะให้เติมตัวนำหน้าไป แล้วตามด้วยชื่อเดิม
อันนี้จะเปลี่ยนชื่อทุกไฟล์โดยไม่สนใจว่าเป็นไฟล์ประเภทใดทั้งสิ้น
แต่ทีนี้ คำสั่ง ren ใช้ วรรค หรือ space ในการตัดคำสั่งระหว่างชื่อเดิมกับชื่อใหม่ที่ต้องการเปลี่ยน ถ้าเกิดไฟล์นั้นดังตั้งชื่อมีวรรค เช่น Data Revol จะเปลี่ยนไปเป็น Leader Pig จะทำอย่างไรล่ะ? เพราะถ้าใช้คำสั่ง ren Data Revol.docx Leader Pig.docx มันจะกลายเป็นว่า จะหาไฟล์ ชื่อ Data เพื่อเปลี่ยนชื่อเป็น Revol.docx ซึ่งมันจะหาไม่เจอเพราะไม่มีไฟล์นี้อยู่
ตรงนี้ต้องใช้เครื่องหมายคำพูด “” เข้ามาใช้ คือแทนที่จะเป็น ren Data Revol.docx Leader Pig.docx ก็จะเป็น ren “Data Revol.docx” “Leader Pig.docx”
ตัวอย่างการนำไปใช้
สถานการณ์จริงที่ต้องใช้คำสั่งนี้ เช่น เมื่อได้รับคำสั่งให้เปลี่ยนชื่อไฟล์แผนที่ให้ตรงตามรูปแบบ จากเดิมเก็บไว้ในรูปแบบ ระวาง-แผ่น (เช่น 1234-56.tif) จะต้องเปลี่ยนให้อยู่ในรูป รหัสสำนักงานที่ดิน-ระวางภูมิประเทศ-ระวาง-แผ่น-มาตราส่วน (10800-51362-1234-56-1m.tif)
วิธีแก้ปัญหาตรงนี้ต้องแยกเป็นสองส่วน
อย่างแรก จัดระเบียบให้แผนที่ซึ่งมี รหัสสำนักงานที่ดิน-ระวางภูมิประเทศ-มาตราส่วน เดียวกัน ไปอยู่ในโฟลเดอร์เดียวกัน เพื่อจะได้เปลี่ยนชื่อทั้งก้อนได้ทีละครั้ง (ตรงนี้ใช้คำสั่ง copy ใน DOS ได้)
ขั้นต่อมา เติมชื่อทั้งข้างหน้าและต่อท้ายก่อนนามสกุลไฟล์
เมื่อเปิด dos มา ต้องกำหนด directory (ก็คือโฟลเดอร์นั่นแหละ) ที่เก็บไฟล์ภาพทั้งหมดก่อน ว่าเก็บไว้ที่ไหน โดยการเปลี่ยน directory ใช้คำสั่ง cd/d ตามด้วย path ของโฟลเดอร์ที่เก็บไฟล์
ข้ามมาขั้นที่สองเลย ใช้คำสั่ง ren ง่าย ๆ เหมือนเดิม เพิ่มเติมทริกเล็กน้อย โดยตัดนามสกุลทั้งหลายทิ้งไปก่อน จะได้เติมต่อท้ายได้สะดวก (ถ้าไม่ลบนามสกุลออกก่อนจะกลายเป็น 10800-51362-1234-56.tif-1m
ren *.tif *.
คำสั่งนี้ให้ค้นหานามสกุล tif แล้วแทนที่โดยไม่ใช่ตัวอะไรเลย (นั่นคือลบทิ้ง) จากนั้นก็สั่งให้เปลี่ยนชื่อให้อยู่ในรูปแบบที่กำหนด
For %a in (*) do ren “%a” “10800-51362-%a-1m.tif”
คำสั่ง For %a in (*) หมายถึงชื่อไฟล์ทุกไฟล์ในโฟลเดอร์นี้
do ren ให้ใช้คำสั่งเปลี่ยนชื่อ
จาก %a (คือชื่อเดิม) เป็น 10800-51362-%a-1m.tif คือเติมชื่อทั้งหน้าและหลังตามรูปแบบตามด้วยใส่นามสกุล tif กลับไปตามเดิม
ง่าย ๆ ไม่ถึงนาที การเปลี่ยนชื่อก็เรียบร้อย
แต่ถ้าชื่อไฟล์เดิม มีความหลากหลาย ไม่ได้อยู่ในรูปแบบเดียวกัน เราอาจจะต้องใช้ Excel เข้ามาช่วยจัดการเรื่องชื่อไฟล์ และ ใช้สร้าง code
Discover more from Data Revol
Subscribe to get the latest posts sent to your email.