iT邦幫忙

0

如何用copy 或script指令,來備份系統日當天的檔案

2bears 2011-03-18 00:05:5815061 瀏覽

請問有經驗的朋友
我的情況是 主機每天會自動產生一個銷售檔 ,我需要每天排程上傳當天產生的檔案到另一台ftp主機

例今天日期是17日,檔名為-->aa03172011.aaa 昨天日期16日,檔名則為 aa03162011.aaa
因為主檔名會依每天的日期做變動,副檔名不會變動。
我想請問的是,依上述的情況,用copy的指令要如何 copy 系統日期為當天的檔案呢?或是有其它方式可以下?
謝謝您

6
kivava
iT邦新手 4 級 ‧ 2011-03-19 19:09:21
最佳解答

可以試試使用 Robocopy 的 /maxage 選項,限制複製的檔案產生於於一天之內

<pre class="c" name="code">D:\>robocopy w:\backup d:\upload *.aaa /maxage:1
2bears iT邦新手 5 級 ‧ 2011-03-20 16:59:32 檢舉

謝謝您的幫忙,解決了主檔名不同又要只copy當天日期的檔案(一天只會產生一個當天的銷售檔)
原本以為ms用richcopy來取代了robocopy,應該也會提供類似的備份參數,不過找了一下沒找到。至少解決了我的工作難題 :)

6
cooch
iT邦研究生 3 級 ‧ 2011-03-18 08:43:15

以 DOS 有限的指令功能要去依照檔名進行日期的判斷不容易達成.

個人建議以檔案的建立日期屬性著手,
可以用 forfiles 去完成,

延伸參考:

請問如何用指令依建立日期刪除資料夾?
http://ithelp.ithome.com.tw/question/10062547

微軟官方使用說明:
http://technet.microsoft.com/en-us/library/cc753551%28WS.10%29.aspx

2
chk
iT邦新手 3 級 ‧ 2011-03-18 09:35:41

為什麼不考慮免費的檔案備份軟體?
真的是在DOS下嗎?
不然市面上一堆備份軟體都做的到吧
檔案不同也沒關係,反正有增量備份
不然就備資料夾

2
sailsolitary
iT邦研究生 2 級 ‧ 2011-03-18 09:53:24

以下是我們公司帳務人員使用的, 我把它改成符合您的需求了, 試試看吧~
XP以上的環境才可以, 印象中 2k 好像就沒有支援 For /f 的樣式..

<pre class="c" name="code">
:Creat_Login
For /F "tokens=1-3 delims=/ " %%a in ('Date /t') do (Set Date=%%b%%c%%a)
Echo open 192.168.97.201 > login.txt
Echo username>> login.txt
Echo userpawd>> login.txt
Echo put aa%date%.aaa >> login.txt
Echo quit >> login.txt

:Start_Download
Ftp -s:Login.txt
Del Login.txt
4
CalvinKuo
iT邦大師 7 級 ‧ 2011-03-18 10:35:55

是要這樣嗎...

<pre class="c" name="code">
copy "D:\aa%date:~5,2%%date:~8,2%%date:~0,4%.aaa" E:

2bears iT邦新手 5 級 ‧ 2011-03-18 19:58:10 檢舉

您好:您寫的這行指令,看起來很像是我要的,但是我有照來試run,好像不行
我的檔名和你有一點點差是是 日月年排序,不是年月日排序,.aaa的前面會多二個數字 10
如下面的範例
來源端路徑 W:\備份\sd1803201110.aaa
目的端 d:\upload
我希望每天排從來源端copy當天日期的檔案到 d:\upload,
我的檔案都是當天清晨產生的,如果用檔案建立日期會不會好下條件?
要如何下呢?
謝謝您的幫忙

zcm iT邦新手 1 級 ‧ 2011-03-21 09:27:13 檢舉

2bears 說:
來源端路徑 W:\備份\sd1803201110.aaa
目的端 d:\upload

照calvinkuo大大的 把位址調一下就可以了
copy W:\備份\sd%date:~8,2%%date:~5,2%%date:~0,4%10.aaa d:\upload

我要發表回答

立即登入回答