想用BAT設排程備份一些資料,
但我需要備份的資料都在不同的資料夾內,
用COPY一個一個指路徑確實可達到我要的效果,
但我要備份的資料新增的速度也快,
變得要一直去維護這BAT,
我要備份的資料附檔名是相同的,
是否可用BAT尋找D:\下有關這副檔名的資料並且COPY,
達到備份且不用一直維護BAT的效果?
forfiles /P D: /s /m *.txt /d -0 /c "cmd /c copy @PATH" E:\備份
forfiles /P D: /s /m *.txt /d -0 /c "cmd /c copy @PATH E:\備份"
b623142001提到:
一直去維護這BAT
策略錯誤!
為什麼將檔案儲存在任意位置,而不是將資料存到同一個路徑內?
<pre class="c" name="code">
for /f %%i in ('D:\dir *.txt /b /s') do Copy /y "%~fi" "E:\備份%~pi"
假設該類型的檔案有1000個但d:底下共有一萬個檔案,這樣的結果是執行了9000個無效的工作
所以還是訂個好策略會好管理些。
for /f %%i in ('D:\dir *.txt /b /s') do Copy /y "%~fi" "E:\備份%~pi"
更正
<pre class="c" name="code">
for /f %%i in ('dir D:\*.txt /b /s') do Copy /y "%~fi" "E:\備份%~pi"
我的資料,不是亂散...
我資料位置 例如:
d:\A012\111.txt
d:\A453\222.txt
d:\A314\333.txt
d:\A785\444.txt
d:\A813\555.txt
d:\A994\666.txt
而我要的只是想定期備份這些.txt檔
只是還會有新的資料出現,
不想要每次一直去改bat內容。
dir找出的資料 這邊變數的用法 我有點不太明白
可以在指導一下嗎 謝謝
若整個D:都是儲存這類檔案則效率不變,若還有其它檔案改成如下會好一些。
D:\Source\A012\111.txt
D:\Source\A453\222.txt
D:\Source\A314\333.txt
D:\Source\A785\444.txt
D:\Source\A994\666.txt
又或直接使 Xcopy 加 /s 也是可行的但需考慮同檔名問題
dir d:\*.txt /b /s 指的是dir出.txt的檔案 /s 是包含子資料夾裡的有要查找 /b是去除不必要的輸出資料以便 DO 後面做COPY的處理
你的系統是?
win8
我的是WIN7 測試OK
你在CMD裡輸入FOR /?查看 %~px 及 %~fx 是否能使用
基本上應該可行
你似乎多了 copy /y ""%~fi" "d:\test%pi""
應該是 copy /y "%~fi" "d:\test%~pi" (看不到後面)
應該是 copy /y "%%~fi" "d:\test%%~pi"
批次檔中要二個%%
另外存檔不能存在D:\TEST另存因為會查找D:以下所有的
b623142001提到:
用COPY一個一個指路徑確實可達到我要的效果,
但我要備份的資料新增的速度也快
好像不太對檔的用法...
即然是【要備份的資料新增的速度也快】..
表示檔案名稱不特定,而且一直在增加...
建議你,使用微軟自家生產,但沒有在廣告的一支【檔案同步】工具來備份..
微軟牌檔案備份、同步工具SyncToy..
有32位元及64位元版..
可設定檔案同步方式,可省掉很多麻煩,自動檢查檔案異動情況,備份速度極快...
找對工具,替你做事,可以事半功倍的...
copy 能用的參數很少
建議請改用 xcopy
還有請把副檔名從 .bat 改成 .cmd
這樣可以用較新的批次檔語法
詳細用法請到MS網站查