Backup ไฟล์ต่างๆด้วย Windows Batch file

เนื่องจากผู้เขียนมีการใช้งานโปรแกรมทำงานและเกมส์ต่างๆ ซึ่งบางครั้งก็ต้องทำการสำรองไฟล์หรือ backup และการแบ็คอัพแต่ละครั้งหลายๆโปรแกรมมีไฟล์จำนวนมากหรือหลายโฟลเดอร์ การต้องลงมือทำทีละงานก็อาจจะใช้เวลานานมากได้ ดังนั้นจึงได้คิดค้นเขียนคำสั่ง Windows Batch ขึ้นมาใช้สั่งทำการสำรองไฟล์ผ่าน command prompt ในทีเดียวแต่ทำได้ครั้งละมากๆแทนเรา.

ยกตัวอย่างเช่นโปรแกรมวาดภาพ Clip Studio Paint เมื่อเราทำการติดตั้งใหม่ หากไม่มีการ backup assets ต่างๆที่เราเคยดาวน์โหลดมา ก็จะต้องดาวน์โหลดกันใหม่ และอาจมีจำนวนมากเป็นพันไฟล์ขึ้นไป ซึ่งใช้เวลานานมากกว่าจะสำเร็จ ดังนั้นการแบ็คอัพสำรองไฟล์แบบออฟไลน์ก็น่าจะเป็นทางที่ง่ายกว่า ถึงแม้จะกินพื้นที่มากมายก็ตาม.

ตัวอย่างคำสั่ง backup Clip Studio assets

@echo off
set arg1=%1

if "%arg1%" == "/?" (
    echo "Set argument 1 to /OPEN to open file explorers."
    goto :eof
)

del "E:\backup\My Documents\CELSYS\CLIPStudioVer1_5_0.zip" /Q
7z a "E:\backup\My Documents\CELSYS\CLIPStudioVer1_5_0.zip" "%USERPROFILE%\Documents\CELSYS\CLIPStudioVer1_5_0\" -mx=9
del "E:\backup\My Documents\CELSYS\CLIPStudioPlugIn.zip" /Q
7z a "E:\backup\My Documents\CELSYS\CLIPStudioPlugIn.zip" "%USERPROFILE%\Documents\CELSYS\CLIPStudioPlugIn\" -mx=9
del "E:\backup\My Documents\CELSYS\CLIPStudioPaintVer1_5_0.zip" /Q
7z a "E:\backup\My Documents\CELSYS\CLIPStudioPaintVer1_5_0.zip" "%USERPROFILE%\Documents\CELSYS\CLIPStudioPaintVer1_5_0\" -mx=9
del "E:\backup\My Documents\CELSYS\CLIPStudioCommon.zip" /Q
7z a "E:\backup\My Documents\CELSYS\CLIPStudioCommon.zip" "%USERPROFILE%\Documents\CELSYS\CLIPStudioCommon\" -mx=9

if "%arg1%" == "/OPEN" (
    echo "Opening file explorers."

    explorer "%USERPROFILE%\Documents\CELSYS"
    explorer "E:\backup\My Documents\CELSYS"
)

echo.
echo ----- All backup completed successfully. -----

คำสั่งชุดนี้มีการใช้งานโปรแกรม 7zip ดังนั้นโปรดดาวน์โหลดโปรแกรมนี้จากหน้าเว็บ https://www.7-zip.org โดยตรง แล้วทำการติดตั้งและตรวจสอบหรือเพิ่ม path ไปยังโปรแกรม 7zip ใน Windows Environment ตามขั้นตอนด้านล่าง. ตัวอย่าง path ไปยังโปรแกรม 7zip C:\Program Files\7-Zip ทั้งนี้โปรดตรวจสอบให้ถูกต้องอีกครั้ง เพราะการติดตั้งอาจต่างกัน.

จากคำสั่งด้านบน จะสั่งให้ลบ (del) ไฟล์ .zip บนเป้าหมายเสียก่อน เพราะการสั่ง 7z ให้สร้างไฟล์ zip ใหม่โดยไม่อัพเดทหรือตามลบข้อมูลที่ถูกลบบนโฟลเดอร์จริงเป็นเรื่องค่อนข้างยุ่งยากมาก การลบแล้วสร้าง zip ใหม่จึงง่ายกว่า.

คำสั่ง 7z มาจากโปรแกรม 7zip โปรดศึกษาคำสั่งเพิ่มเติมได้ที่ https://sevenzip.osdn.jp/chm/cmdline/index.htm.
คำสั่ง 7z a "E:\Target\File.zip" นี้เป็นการสั่งให้สร้างไฟล์ zip ไปยังตำแหน่งที่ต้องการสำรองไฟล์โดยตรง ดังนั้นจึงไม่ต้องทำการย้ายไฟล์หรือทำซ้ำใดๆอีกแล้ว เพียงแต่หากผู้อ่านจะนำไปใช้ก็ขอให้แก้ไข path ให้ถูกต้อง.
%USERPROFILE% (คือตำแหน่งโฟลเดอร์ของผู้ใช้บน Windows เช่น C:\Users\MyUSER.
เนื่องจากไฟล์ต่างๆของโปรแกรมนี้อยู่ที่ %USERPROFILE%\Documents\CELSYS แต่ไม่ใช่ทั้งหมดที่จำเป็นต้องสำรอง ดังนั้นจึงเลือกทำการสร้างไฟล์ zip เฉพาะบางโฟลเดอร์เท่านั้น.

การนำไปใช้

ให้นำคำสั่งดังตัวอย่าง สร้างไว้ในไฟล์ .bat โดยอาจสร้างด้วยโปรแกรม Notepad ธรรมดาก็ได้แล้วบันทึกให้มีนามสกุล .bat โดยอาจสร้างไฟล์ไว้ที่ D:\portable-programs\mybackup.bat แล้วนำ path D:\portable-programs นี้ใส่ไว้ใน Path ของ Windows Environment ตามขั้นตอนด้านล่าง.
จากนั้นจึงสามารถเปิดโปรแกรม Command Prompt หรือ PowerShell เพื่อพิมพ์คำสั่งได้เลย เช่น mybackup โดยพิมพ์จากที่ใดก็ได้ ไม่ต้องพิมพ์รวม path เต็มๆเพราะได้เพิ่มไว้ใน Windows Environment แล้ว.

ตัวอย่างคำสั่ง backup ไฟล์เกมส์ Cities Skylines

@echo off
set arg1=%1

if "%arg1%" == "/?" (
    echo "Set argument 1 to /OPEN to open file explorers."
    goto :eof
)

robocopy "D:\program-files\Steam\userdata345675710\remote" "E:\backup\steam\userdata\xxxxx (random number)5710 (cities skylines)\remote" *.crp *.cgs
robocopy "D:\Steam\steamapps\common\Cities_Skylines" "E:\backup\steam\steamapps\common\Cities_Skylines" AutoLineColorSettings.xml BulldozeItConfig.xml CSL-FogOptions.xml FPSCameraUpdatedConfig.xml LoadingScreenMod.xml ProfitableTourismModOptions.xml TMPE_GlobalConfig.xml ToolbarCentreOptions.xml ZoomItConfig.xml
robocopy "%USERPROFILE%\AppData\Local\Colossal Order\Cities_Skylines" "E:\backup\AppData\Local\Colossal Order\Cities_Skylines" CinematicCameraExtended.cgs CSL-DaylightClassic.xml FindItCustomTags.xml gameSettings.cgs NetworkSkinsSettings.xml UltimateLod.xml UnlockAllWondersAndLandmarks.xml
robocopy "%USERPROFILE%\AppData\Local\Colossal Order\Cities_Skylines\CinematicCameraExtended" "E:\backup\AppData\Local\Colossal Order\Cities_Skylines\CinematicCameraExtended" /E


if "%arg1%" == "/OPEN" (
    echo "Opening file explorers."

    explorer "D:\Steam\steamapps\common\Cities_Skylines"
    explorer "E:\backup\steam\steamapps\common\Cities_Skylines"
)

echo.
echo ----- All backup completed successfully. -----

คำสั่งด้านบนนี้ ใช้วิธีการสำรองไฟล์โดยการทำซ้ำพวกไฟล์ save จากแมปต่างๆรวมถึง mod, assets โดยใช้โปรแกรม robocopy. โปรดศึกษารายละเอียดเพิ่มเติมเกี่ยวกับโปรแกรมนี้ได้ที่ https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy

นอกจากตัวอย่างด้านบนแล้ว Windows Batch file ยังสามารถทำอย่างอื่นได้อีกหลากหลาย รวมถึงงานต่างๆสำหรับโปรแกรมเมอร์ด้วยเช่นกัน. ถ้าหากเป็นผู้ใช้ Linux เช่น Ubuntu ก็อาจต้องศึกษาจากคำสั่งพวก Bash Script แทน.

การเพิ่ม Path ใน Windows Environment

  • กดปุ่ม Windows บนคีย์บอร์ดและปุ่ม R (+R)
  • พิมพ์คำสั่ง SystemPropertiesAdvanced แล้วกด OK
  • คลิกที่ Environment Variables
  • ภายในกรอบล่าง หรือ System variables ให้เลื่อนลงมาที่ชื่อ Path แล้วคลิก Edit
  • รายการต่างๆในนี้จะเป็น Path ต่างๆที่จะช่วยให้เข้าถึงได้โดยไม่ต้องพิมพ์ชื่อ path เต็มๆใน Command Prompt หรือ PowerShell. หากเป็น Windows รุ่นเก่า, มันจะแบ่งแยก path ต่างๆด้วยเครื่องหมาย semi colon (;).

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

คุณอาจใช้แท็กHTMLและแอททริบิวต์เหล่านี้: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>