การสร้างโฟลเดอร์ ทีละมาก ๆ

การสร้างโฟลเดอร์ – folder หรือ ไดเร็กทอรี – directory เป็นเรื่องพื้นฐานมาก ๆ เลยนะจ๊ะ แต่ถ้าต้องมาสร้างโฟลเดอร์ใหม่สัก 8,000 โฟลเดอร์ คิดว่าสนุกมั้ยจ๊ะ?

อันนี้จากประสบการณ์ตรงเลย มีอยู่ครั้งหนึ่งสร้างโฟลเดอร์องค์กรปกครองส่วนท้องถิ่นจำนวน 7,850 แห่ง การจะมาทำโฟลเดอร์ทีละอัน ตั้งชื่อไปทีละแห่ง ไม่ใช่เรื่องสนุก ต้องหาวิธีช่วย

การสร้างโฟลเดอร์แบบทั่วไป

ก่อนอื่น เรามาทบทวนก่อนว่า ถ้าเป็นปกติ เราจะสร้างโฟลเดอร์ขึ้นมา 1 โฟลเดอร์ วิธีการก็คือ จะเปิด File Explorer ขึ้นมา อ๊ะ…สำหรับมือใหม่จริง ๆ File Explorer ก็คือหน้าต่างที่เราใช้ดูไฟล์ต่าง ๆ นั่นแหละจ้ะ วิธีการเปิดทำได้หลายวิธี อย่างเช่น

ที่คีย์บอร์ด กดปุ่ม Windows (ที่เป็นโลโก้วินโดว์) กับ E พร้อมกัน หรือ พิมพ์คำว่า File Explorer ในช่องค้นหา ตรงมุมล่างด้านซ้ายมือของจอคอมพิวเตอร์ก็ได้

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

การสร้างโฟลเดอร์
การสร้างโฟลเดอร์ตามปกติคือ คลิกขวา เลือก New (สร้าง) > Folder (โฟลเดอร์)

หรือจะใช้คีย์บอร์ดช็อตคัต กด Ctrl+Shift+N ก็ได้เหมือนกัน

นี่คือวิธีที่เราสร้างโฟลเดอร์ตามปกติ แต่มันยังมีวิธีการอื่นอีกเยอะแยะไปหมด ซึ่งครั้งนี้ โจทย์คือการสร้างโฟลเดอร์ทีละมาก ๆ แบบเร็ว ๆ จะต้องทำอย่างไร ตรงนี้ จะใช้ cmd หรือ command line หรือ ที่เราเรียกกันทั่วไปว่า คำสั่ง dos เข้ามาช่วย

สร้างโฟลเดอร์ด้วย MS-DOS

คำสั่งที่เราจะใช้สร้างโฟลเดอร์ จะเรียกว่า Make Directory (อ่านรายละเอียดที่เว็บไมโครซอฟต์นะจ๊ะ)

อย่างที่เคยบอก โฟลเดอร์ – Folder – ไดเร็กทอรี – Directory คืออย่างเดียวกัน อยู่ที่ใครจะเรียกอะไร แต่สำหรับ Dos จะใช้ Directory ซึ่งคำสั่งก็คือ

mkdir

(จำง่าย ๆ make directory – mk เป็นตัวย่อของ Make และ dir คือตัวย่อของ directory

มาลองทำกัน

ขั้นแรก เปิด cmd ขึ้นมา cmd ก็คือ command prompt มีวิธีการเรียกใช้งานได้หลายวิธี เช่น

  • กดปุ่มสัญลักษณ์วินโดว์ที่คีย์บอร์ด พร้อมตัว x เพื่อเรียกเมนูคำสั่งขึ้นมา แล้วเลือก command prompt
  • หรือ พิมพ์ cmd ที่ช่องค้นหา ตรงด้านล่างซ้ายมือ
  • หรือ ถ้าอยู่ในหน้า File Explorer อยู่แล้ว พิมพ์ cmd ที่ address bar

ปกติ เมื่อเราเปิด Command Prompt ขึ้นมาจะไปอยู่ที่ไดเร็กทอรีของ user เช่น C:\Users\ชื่อผู้ใช้ แบบนี้เป็นต้นถ้าเราจะย้ายพื้นที่ทำงานไปที่โฟลเดอร์ หรือ ไดเร็กทอรีอื่น เราใช้คำสั่ง cd/d ก็ได้

สมมติว่า จะสร้างโฟลเดอร์ชื่อ DataRevol จะใช้คำสั่งนี้

mkdir DataRevol

ถ้าจะสร้างโฟลเดอร์ชื่อ Data กับ Revol (2 โฟลเดอร์) ใช้คำสั่งนี้

mkdir Data Revol

หรือ

md Data Revol

ถ้าอยากจะสร้างโฟลเดอร์เดียว แต่ใช้ชื่อโฟลเดอร์ว่า Data Revol (มีเว้นวรรค) จะต้องใส่เครื่องหมายคำพูด “ “ ครอบหน้าหลัง เช่น

mkdir “Data Revol”

หรือ

md “Data Revol”

แต่ถ้าจะสร้างโฟลเดอร์ชื่อ Data แล้วข้างในให้มีโฟลเดอร์ชื่อ Revol อยู่ จะเป็น

md Data/Revol

หรือ

mkdir Data\Revol

โปรดสังเกตว่าใช้ แบ็กสแลช (\) ไม่ใช่ สแลช (/) ถ้าใช้ผิด จะขึ้นคำว่า The syntax of the command is incorrect.

หรือไปสร้างโฟลเดอร์ในไดร์ฟ D ก็จะเป็น

md D:\DataRevol

แบบนี้เป็นต้น

การสร้างโฟลเดอร์

โอเค น่าจะพอเห็นภาพแล้ว

บางท่านคงเห็นแล้วว่าเราสร้างหลายโฟลเดอร์ได้ในครั้งเดียวด้วยคำสั่ง md แต่สำหรับการสร้างโฟลเดอร์ร่วม 8,000 โฟลเดอร์ การจะมาเขียนไปทีละชื่อคงไม่เหมาะเท่าไหร่ เราจะสร้างลิสต์รายชื่อ น่าจะดีกว่า

คำสั่งวนลูป ให้สร้างโฟลเดอร์จากลิสต์รายชื่อ

ขั้นแรก สร้างเป็นลิสต์รายชื่อเก็บไว้ใน Text File (ตอนที่ทำมีรายชื่ออยู่ใน Excel แล้วก็ copy มาลงที่ Text File เลย) สมมติตั้งชื่อว่า list.txt

จากนั้น เข้า Command Prompt เราจะใช้ MD แต่จะให้วนลูปโดยดึงค่าจากลิสต์ใน Text File มาใช้

คำสั่งลูปก็คือ

FOR %variable IN (set) DO command [command-parameters]

ก็คือ for จะใช้เป็นเงื่อนไข จะตามด้วย do ว่า ให้ทำอะไร

ในที่นี้ เราจะตั้งให้ for ด้วยการอ่าน รายชื่อ (%variable) ใน list.txt เพื่อใช้ค่า รายชื่อ นั้นมาสร้างโฟลเดอร์ (คำสั่งสร้างโฟลเดอร์คือ md)

ให้อ่านค่าใน Text File จะต้องใช้ for/f เพื่อสั่งให้อ่านในไฟล์

ซึ่งไฟล์ที่เรากำหนดก็คือ (set) ในที่นี้ จะเป็น list.txt ที่เราสร้างไว้แล้ว

ส่วน %variable จะตั้งเป็น %d

เราเขียนคำสั่งได้สองแบบ

แบบที่ 1

for /f %d in (list.txt) do md %d

อธิบายง่าย ๆ คือ

for /f คือ “จงทำลูปโดยอ่านค่าใน text file”

%d คือ “ค่าตัวแปรที่อยู่ใน text file”

In (list.txt) คือ “ในไฟล์ list.txt”

Do md %d คือ “เมื่ออ่านแล้วจงสร้าง directory (หรือโฟลเดอร์นั่นแล) ด้วยชื่อตัวแปรที่อ่านได้”

for /f %d in (list.txt) do md %d

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

คำเตือน

อย่าลืมดูว่า text file บันทึกในรหัสภาษาอะไร อย่างเช่น ตัวอย่างนี้ บันทึกเป็น UTF-8 แต่คอมพิวเตอร์ที่ใช้ไม่ได้เป็น UTF-8 ผลจะออกมาแบบนี้

ถ้าไม่ตรวจสอบ Character Enconding ให้ดี ผลลัพธ์อาจจะออกมาแบบนี้

วิธีดูง่าย ๆ ว่าตอนนี้ใช้ รหัสภาษาหรือ character encoding อะไร เปิด Notepad มาดูที่มุมขวาด้านล่าง

ถ้าใช้ windows แนะนำให้บันทึกเป็น ANSI กดบันทึกเป็น (save as) แล้ว เลือกรหัส (encoding) ANSI ก่อนกดบันทึก (save) นะจ๊ะนะจ๊ะ

ทำเป็น bat

ถ้าต้องทำบ่อย ๆ เรามาทำ shortcut จะได้ไม่ต้องเปิด command line บ่อย ๆ ด้วยการทำ .bat ดีกว่า นั่นคือ เขียน

for /f %d in (list.txt) do md %d ลงใน text file แล้ว save จาก .txt เป็น .bat (ใช้ rename ธรรมดานี่แหละจ้ะ)

แต่ว่า พอเป็น .bat การสร้าง %variable จะต้องใส่ % เพิ่มเข้าไปด้วย คำสั่งจะเป็นแบบนี้

for /f %%d in (list.txt) do md %%d

แบบที่ 2

ความจริงก็คือแบบที่ 1 นั่นแหละ

for /f "tokens=* delims=,"  %d in (list.txt) do md %d

ลองดูค่า parameter จาก https://ss64.com/nt/for.html ก็แล้วกันเนอะ อันนี้เอามาลงให้ดูว่า การเขียนโค้ดมันเขียนได้หลายแบบเฉย ๆ จะทำเป็น bat file ก็ได้ เติม % หน้า %d (เป็น %% d) ซึ่งท้ายที่สุดแล้ว ก็จะได้ผลลัพธ์เหมือนกัน คือมีหน้าตาแบบนี้

สำหรับอีกทางเลือกหนึ่ง คือการเขียน VBA ใน EXCEL จัดการใน Excel โดยตรง แล้วจะเขียนถึงอีกครั้ง

TIPS

สำหรับการ Copy File ทีละมาก ๆ โปรดอ่านที่นี่

ถ้าต้องการสร้างโฟลเดอร์ย่อย ใช้ / (ย้อนกลับไปอ่านตรงคำสั่ง md ด้านบน)

ถ้าต้องการสร้างชื่อโฟลเดอร์ที่มีเว้นวรรค อย่าลืมใส่ “ “ ครอบไว้ด้วย (ย้อนกลับไปอ่านตรงคำสั่ง md ด้านบน)

ความคิดเห็นของคุณ :)

%d bloggers like this: