สร้าง batch file เพื่อ upload เข้า ftp อัตโนมัติ

นักเลงคอมพ์รุ่นเก่าอย่างผม เวลาเกิดปัญหาอะไรขึ้นมาบางครั้งก็นึกถึงหน้าจอระบบปฏิบัติการสีดำๆ เครื่องหมาย prompt และ batch file เพื่อนเก่าอยู่เหมือนกัน ผมคิดว่ามันเหมือนช่องเล็กๆพอให้แมวลอดดอดเข้าไปสู่โลกลึกลับที่อนุญาติให้ทำอะไรต่อมิอะไรได้เสร็จไม่ต้องทำพิธีร่ายมนต์ coding อะไรให้มากความ เพื่อบุกให้งานเสร็จไปก่อน หรือไม่ก็เพื่อเทสต์ business logic ให้ผ่านก่อนลงมือทำ apps ตัวจริง

เกริ่นมาเสียมากมายวันนี้จะขายอะไร?
เข้าเรื่องเลยละกัน ก็คือวันนี้ผมจะมาแนะนำวิธีการ "อัพโหลดไฟล์เข้าสู่ FTPServer แบบอัตโนมัติ" ด้วย Batch File เมื่อทำเสร็จแล้วคุณกดคลิกเดียว ไฟล์ของคุณจะไปเสนอหน้าอยู่ใน FTPServer ได้เองโดยไม่ต้องเสียเวลาเรียกใช้โปรแกรม FTP Client ต่างๆ เช่น FileZilla หรือ WsFTP มาเปิด เลือกไฟล์ แล้วกดอัพโหลดเองให้เสียเวลาเลย โดยงานนี้เรามีพระเอกก็คือคำสั่งภายนอก ftp.exe ใน windows และมีนางเอกก็คือ BatchFile นั่นเองครับโดยเราจะเขียนบทกำกับให้นางเอกไปสั่งพระเอกให้ทำตามสคริป โดยเราสร้างไฟล์ up2ftp.bat เป็น TextFile โดยใช้ชื่อ up2ftp.bat มีเนื้อหาข้างในดังนี้ครับ
@echo off 
echo user [ftp_username]> ftp.cmd
echo [ftp_password]>> ftp.cmd
echo bin>> ftp.cmd
echo put %1>> ftp.cmd
echo quit>> ftp.cmd
ftp -n -s:ftp.cmd [ftp_address]
del ftp.cmd

ซึ่งไอ้การสร้าง TextFiles หรือ BatchFile นี่นักเลงคอมพ์รุ่นเก๋าเค้าใช้ copy con up2ftp.bat ใน Command Prompt แล้วพิมพ์ๆๆ จากนั้นกด CTRL+Z กันเลย แต่รุ่นใหม่ๆสมัยนี้มี Editor ใช้กันอย่างแพร่หลายแล้วก็ใช้กันไปเถิดครับ ผลลัพธ์ไม่ต่างกัน แถมสะดวกตอนจะแก้ไขด้วย ไม่ต้องโชว์เทพมาก พอพิมพ์ผิดแล้วมันย้อนกลับไม่ได้ ฝากอีกนิดนึงนะครับ สำหรับ [ftp_username] ในเนื้อความนั้นเป็นค่าที่ใส่ไปแบบนั้นมันไม่ทำให้คุณแน่ๆ ให้คุณแทนที่เหมือนเป็นตัวแปร [ftp_username] แทนที่ด้วยชื่อผู้ใช้ , [ftp_password] แทนที่ด้วยรหัสผ่าน และ [ftp_address] แทนที่ด้วย url ของ FTPServer หรือ IP Address ครับ ซึ่งค่าเหล่านี้มาจากไหน อ้าว..อันนี้จะใช้ FTPServer คุณจะต้องหารหัสผู้ใช้และรหัสผ่านมาจากผู้ให้บริการ Server ของคุณไงครับ

แล้วใช้ยังไงครับ?
ฮ่าาาา ง่ายมากครับ เวลาใช้ก็เพียงแค่ออกไปที่ Command Prompt ซึ่งใน Windows สมัยนี้ก็กดปุ่ม windows + R ก็ได้ครับ (จริงๆแล้วมีหลายวิธี) จากนั้นก็พิมพ์ up2ftp [ตามด้วยชื่อไฟล์ที่ต้องการอัพโหลด] แล้วกด OK หากไม่มีอะไรผิดพลาดไฟล์ที่คุณระบุก็จะไปเสนอหน้าอยู่บน FTPServer ตามต้องการแล้วครับ ตรงนี้เราก็เข้าโปรแกรม FTP Client ต่างๆเข้าไปตรวจดูได้เลยครับ

แล้วอะไรที่ว่าผิดพลาดจะแก้ไขยังไง?
ส่วนมากแล้วก็จะผิดพลาดจาก File Not Found!! คือไม่เจอไฟล์ที่คุณสร้าง (up2ftp.bat) เพราะเวลาสร้างระบบ Windows ไม่รับรู้ว่าคุณสร้างไฟล์ up2ftp.bat เอาไว้ตรงไหน ดังนั้นอาจแก้ไขโดยการสร้าง Short Cut ให้มันเป็นเรื่องเป็นราวไปเลยก็ได้โดยการกด Windows + E เพื่อเรียก Explorer แล้วก็ไป Browse หาไฟล์ที่สร้างให้เจอจากนั้นก็สร้างเป็น ShortCut ด้วยการกดเมาส์ปุ่มขวา แล้วเลือก Send to Desktop (Shortcut) แต่วิธีนี้คุณต้องไปแก้ Shortcut ให้ใส่ชื่อไฟล์ที่จะอัพโหลดลงไปใน Shortcut ด้วยเลยนะครับไม่งั้นพอเรียกมันทำงานก็จะไม่เห็นผล เพราะว่าไม่ได้บอกมันว่าคุณจะอัพโหลดไฟล์อะไร

ยากจัง?
ไม่ยากนะครับ ถ้าจะพัฒนาโปรแกรมหรือหา Skill ด้านโปรแกรมมิ่ง BatchFiles นี่จัดเป็นเรื่องพื้นฐานสำหรับการหัดเขียนโปรแกรมเลยก็ว่าได้ ลองอ่านอีกรอบครับ หากไม่เข้าใจก็อ่านใหม่ อ่านจนกว่าจะเข้าใจ ฮา....า ไม่งั้นก็ปล่อยไว้ แล้วไปหาอ่านเรื่อง BatchFiles เพิ่มสักหน่อยครับ เพราะที่เขียนมานี่ไม่มีอะไรมาก แค่เรียก ftp.exe แล้วป้อนคำสั่งให้มันแบบ s: คือใช้สคริป ที่เหลือก็โม้มั่งอะไรมั่งไปตามเรื่อง

ทีนี้เอาไงต่อ?
ถ้าคุณจะปรับปรุงเพื่อให้เหมาะกับงานคุณ หรือเอาไปใช้ต่อก็อาจต้องปรับอะไรบ้างเล็กน้อย เช่นว่า ... 

  • หากจะใช้บ่อยๆเป็นการถาวรก็อาจสร้างให้ระบุไฟล์ลงไปเลยว่าอัพไฟล์ไหนบ้าง ไม่ต้องมาบอกกันทุกครั้งเพราะมันจะรำคาญแย่ แถมอาจป้อนชื่อไฟล์ผิดอีก คุณก็แทนที่บรรทัด
    echo put %1>> ftp.cmd ลงไปด้วย
    echo put [ชื่อไฟล์ที่จะอัพโหลด]>> ftp.cmd แทนไงครับเพราะคำสั่ง put มันคือคำสั่งอัพโหลดไฟล์ของ ftp.exe อย่าลืมระบุ FilePath ให้ครบถ้วนล่ะ เดี๋ยวไม่โหลดจะมาหาว่าหล่อไม่เตือน
  • หากจะอัพโหลดคราวละหลายๆไฟล์ก็เพิ่ม
    echo put file1.ext>> ftp.cmd
    echo put file2.ext>> ftp.cmd
    เพิ่มเจ้าที่ว่านี่ลงไปหลายๆบรรทัดครับ ไม่มีไรมาก..ก
  • หากอยากจะให้อัพโหลดไปยังรีโมทไดเรคทอรี่อื่นๆ (หมายถึงไฟล์ไดเรคทอรี่ใน Server) คุณก็ใช้คำสั่ง CD เหมือนใน Command Prompt นั่นแหละเพื่อไปหาพื้นที่ที่ต้องการก่อนจะ put ครับ เช่น
    echo cd /domains/uploads/>> ftp.cmd เป็นต้น
จบยัง?
ไม่ยากเกินไปใช่ไหม เอาล่ะ...จบแล้วครับ ปรบมือสิครับจะรออะไรอยู่ ^_^
บายครับ ไว้เจอกันใหม่ตอนหน้า...ถ้าคุณยังจะมาอ่านอยู่ 55+

แสดงความคิดเห็น

0 ความคิดเห็น