Using Command Line to Mirror a Folder Every Day Automatically with .bat file and task schedule function in Windows電腦自動備份檔案

 Windows其實有很多厲害的功能是書上不會寫的,但是只要你問得出問題來,你就能找到答案而這個問題通常要用英文去問。





但那是以前,就在我找了茫茫blog海終於研究出來之後,我發現我可以問chatGPT...






好的,既然你能找到我這邊,就代表你問對問題了,答案直接說,原理你就另外去查吧:

這裡用到了cmd終端機的幾個指令,包括了

robocopy

mkdir

for

set

還有神奇的 %date%


開啟一個記事本,編輯純文字,最後把它存成.bat的自動執行檔案,檔案的內容:

-------------------------------------------這是開始線---------------------

@echo off

for /F "tokens=1-4 delims=/ " %%1 IN ("%date%") DO (SET _FolderName=FolderBackup%%1%%2%%3%%4 )

MD %_FolderName%

robocopy C:\Users\OriginalFoolder C:\Users\%_FolderName% /mir 

-------------------------------------------這是結束線---------------------

這樣他就會在你指定的位置創建一個帶有日期的資料夾,像是"FolderBackup20230202"這樣子

然後把你的來源資料夾鏡像存入這裡面。

簡單備註一些事情:

如果你要在cmd裡面直接一行行打,第一行的地方要改成

for /F "tokens=1-4 delims=/ " %1 IN ("%date%") DO (SET _MyDate=FolderBackup%1%2%3%4 )

第二行其實是多的,因為第三行robocopy這樣寫,如果原本沒有資料夾,他會幫你創建,但是我喜歡一步一步的感覺

第三行的兩個位置,第一個是來源資料夾,第二個是目的地資料夾,參數/mir是鏡像的方式

%%1%%2%%3%%4 代表了年月日星期,或是星期年月日,每個版本OS好像不太一樣,看著辦修改。


這個.bat自動執行檔案就到這邊,你點兩次它就跑給你看,但是想要在你不點它,他也偷偷自動跑,就要去task scheduler或是工作排程器去設定







去把剛剛做的.bat自動執行檔案選起來,這樣時間到了他就跑一次,直到你硬碟掛掉,或是電腦關機。

如果要取消或是暫停,就去工作排程器裡面把他找出來,刪掉或暫停。

因為系統裡面很多工作,真的很多....



是真的很多很多...





最好你記得你取甚麼名字,方便搜尋。



電腦真的很好玩啊!!!!!!


參考了一些資料,希望這些網頁頁面都能永世長存


https://blog.xuite.net/mypace/wretch/145109081

https://stackoverflow.com/questions/5485853/how-to-create-a-folder-with-name-as-current-date-in-batch-bat-files

https://scarf0910.wordpress.com/2010/09/17/bat%E6%89%B9%E6%AC%A1%E6%AA%94%E6%A1%88%E8%AA%9E%E6%B3%95/

https://stackoverflow.com/questions/5485853/how-to-create-a-folder-with-name-as-current-date-in-batch-bat-files

https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/set_1

https://www3.ntu.edu.sg/home/ehchua/programming/howto/Environment_Variables.html


寫一個.bat的批次執行檔案,裡面寫了可以運用cmd命令去竟像備份一個目標資料夾,並且把備份資料夾命名為備份的那一天日期,日期用yyyymmdd表達。這個.bat檔案的內容該怎麼寫?

這個問題我大概花了五六個小時去找答案,剛剛我想到我可以問chatGPT,結果:


是的,經過我五六小時的研究學習,我一看就知道他的程式碼差不多都是對的,就是格式可能有點小差異,但他連%與%%都注意到了。(複製到下面給大家方便ctrl+C)

到底我該不該沮喪呢?

@echo off set source_folder=<你的目標資料夾的路徑> set destination_folder=<你的備份資料夾的路徑> for /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b) set mydate=%mydate: =0% robocopy %source_folder% %destination_folder%%mydate% /mir



同場加碼,繼續追問


我現在是真的有點沮喪了...應該早點來問?


留言

熱門文章