引用:
|
作者PAN_PAN
以我的經驗來說.
應該是 %date% 的格式出了問題.
我的 date format 是設成 USA
但是我一 echo 你的 %date% format 就出現了 7/9
echo %date=~0,4%%date:~5,2%%date:~8,2%
MS 的 Fire structure 不可以用 / 去命名
我的做法是 你需要 FORFILES 這個檔案
FORFILES /P "C:\FROM_FOLDER" /M *.tif /D -90 /c "cmd /c C:\Backup\Job.Scripts\7z\7za a \\TO_SERVER\TO_FOLDER\Backup.7z @file"
RENAME \\TO_SERVER\TO_FOLDER\Backup.7z %date:~-4,4%%date:~-10,2%%date:~-7,2%.7z
FORFILES /P "C:\FROM_FOLDER" /M *.tif /D -90 /c "cmd /c del @file"
第一行: 用 Forfiles 找出 多過 90 天的 tif 檔 然後用 7z 壓縮成 Backup.7z
第二行: 把 Backup.7z 重新命名成今天的日期
第三行: 用 Forfiles 刪除 多過 90 天的 tif 檔
然後把這...
|
date的部份應該是ok的,因為可以正確抓到如:20080730
至於FORFILES的部份,小弟會再試試看 ^^
引用:
|
作者PAN_PAN
另外:
>> 其中DEL /Q D:\X\A.idm.200????? 不知為何一直無法正確執行<<
:STEP_5
if errorlevel 0 "GOTO RESULT" & "DEL /Q D:\BACKUP\NET\hosts"
他和其他的 STEP 不太一樣..
|
因為路徑太長,所以帖上省略成D:\X\,批次檔內的倒是正確的
先感謝PAN_PAN大大的回覆
另外,小弟剛用修改過的批次檔跑過後,出現下面的問題
dos視窗:
c:\>aa.bat
系統找不到指定的路徑。
系統找不到指定的路徑。
系統找不到指定的路徑。
系統找不到指定的路徑。
系統找不到指定的路徑。
紀錄檔(每月資料備份壓縮_20080730.log)
----------------------------------------------------
------------- 20080730 個人資料備份檔 --------------
----------------------------------------------------
開始備份時間:
上午 12:03
----------------------------------------------------
-------- 壓縮 MSN表情符號、大頭貼、動畫快遞 --------
----------------------------------------------------
壓縮完成!!
檔案被鎖住,無法壓縮!!
發生嚴重錯誤!!
----------------------------------------------------
------------- 壓縮 記帳資料(1個檔案)-------------
----------------------------------------------------
壓縮完成!!
檔案被鎖住,無法壓縮!!
發生嚴重錯誤!!
----------------------------------------------------
----------- 壓縮 密碼管理資料(2個檔案)-----------
----------------------------------------------------
壓縮完成!!
檔案被鎖住,無法壓縮!!
發生嚴重錯誤!!
----------------------------------------------------
------------ 壓縮 模擬器資料(2個檔案)------------
----------------------------------------------------
壓縮完成!!
檔案被鎖住,無法壓縮!!
發生嚴重錯誤!!
----------------------------------------------------
------------ 壓縮 hosts 檔案(1個檔案)------------
----------------------------------------------------
壓縮完成!!
檔案被鎖住,無法壓縮!!
發生嚴重錯誤!!
----------------------------------------------------
---------------- 輸出 備份完成 時間 ----------------
----------------------------------------------------
結束備份時間:
上午 12:03
----------------------------------------------------
出現更奇怪的問題.....汗
修改過的批次檔:
@echo off
SET month_log="D:\LOG\每月資料備份壓縮_%date:~0,4%%date:~5,2%%date:~8,2%.log"
SET 7Z="C:\program Files\7-zip\7z"
SET mame="%date:~0,4%%date:~5,2%%date:~8,2%.7z"
SET /a run_step="10"
if exist %month_log% del %month_log%
GOTO CHOICE
:CHOICE
if "%run_step%"=="10" GOTO STEP_0
if "%run_step%"=="11" GOTO STEP_1
if "%run_step%"=="12" GOTO STEP_2
if "%run_step%"=="13" GOTO STEP_3_1
if "%run_step%"=="14" GOTO STEP_4_1
if "%run_step%"=="15" GOTO STEP_5
if "%run_step%"=="16" GOTO STEP_6
if "%run_step%"=="17" GOTO END
GOTO END
:RESULT
if errorlevel 0 ECHO 壓縮完成!! >> %month_log%
if errorlevel 1 ECHO 檔案被鎖住,無法壓縮!! >> %month_log%
if errorlevel 2 ECHO 發生嚴重錯誤!! >> %month_log%
if errorlevel 7 ECHO 壓縮命令列錯誤!! >> %month_log%
if errorlevel 8 ECHO 記憶體不足!! >> %month_log%
if errorlevel 255 GOTO ECHO 使用者中斷!! >> %month_log%
set /a run_step=%run_step% + "1"
IF "%sub_step%"=="13" GOTO STEP_3_2
IF "%sub_step%"=="14" GOTO STEP_4_2
GOTO CHOICE
:STEP_0
SET run_step=10
ECHO ---------------------------------------------------- >> %month_log%
ECHO ------------- %date:~0,4%%date:~5,2%%date:~8,2% 個人資料備份檔 -------------- >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
echo 開始備份時間: >> %month_log%
TIME /T >> %month_log%
GOTO STEP_1
:STEP_1
SET /a run_step="11"
ECHO ---------------------------------------------------- >> %month_log%
ECHO -------- 壓縮 MSN表情符號、大頭貼、動畫快遞 -------- >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%7z% a -mx=9 -t7z D:\BACKUP\MSN\
[email protected].%mame% D:\BACKUP\MSN\
[email protected]
if errorlevel 0 GOTO RESULT && "RD /S/Q D:\BACKUP\MSN\
[email protected]\"
if not errorlevel 0 GOTO RESULT
GOTO STEP_2
:STEP_2
SET /a run_step="12"
ECHO ---------------------------------------------------- >> %month_log%
ECHO ------------- 壓縮 記帳資料(1個檔案)------------- >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%7z% a -mx=9 -t7z D:\BACKUP\Charge\MyMoneyData.mdb.%mame% D:\BACKUP\Charge\MyMoneyData.mdb.200?????
if errorlevel 0 GOTO RESULT && "DEL /Q D:\BACKUP\Charge\MyMoneyData.mdb.200?????"
if not errorlevel 0 GOTO RESULT
GOTO STEP_3_1
:STEP_3_1
SET /a run_step="13"
ECHO ---------------------------------------------------- >> %month_log%
ECHO ----------- 壓縮 密碼管理資料(2個檔案)----------- >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%7z% a -mx=9 -t7z D:\BACKUP\PassWord\my.idm.%mame% D:\BACKUP\PassWord\my.idm.200?????
if errorlevel 0 GOTO RESULT && "DEL /Q D:\BACKUP\PassWord\my.idm.200?????"
if not errorlevel 0 SET sub_step="13"
GOTO STEP_3_2
:STEP_3_2
SET sub_step=
%7z% a -mx=9 -t7z D:\BACKUP\PassWord\my.apw.%mame% D:\BACKUP\PassWord\my.apw.200?????
if errorlevel 0 GOTO RESULT && "DEL /Q D:\BACKUP\PassWord\my.apw.200?????"
if not errorlevel 0 GOTO RESULT
GOTO STEP_4_1
:STEP_4_1
SET /a run_step="14"
ECHO ---------------------------------------------------- >> %month_log%
ECHO ------------ 壓縮 模擬器資料(2個檔案)------------ >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%7z% a -mx=9 -t7z D:\BACKUP\Game\OfflineList_conf.ini.%mame% D:\BACKUP\Game\OfflineList_conf.ini.200?????
if errorlevel 0 GOTO RESULT && "DEL /Q D:\BACKUP\Game\OfflineList_conf.ini.200?????"
if not errorlevel 0 SET sub_step="14"
GOTO STEP_4_2
:STEP_4_2
SET sub_step=
%7z% a -mx=9 -t7z D:\BACKUP\Game\clrmamepro_cmpro.ini.%mame% D:\BACKUP\Game\clrmamepro_cmpro.ini.200?????
if errorlevel 0 GOTO RESULT && "DEL /Q D:\BACKUP\Game\clrmamepro_cmpro.ini.200?????"
if not errorlevel 0 GOTO RESULT
GOTO STEP_5
:STEP_5
SET /a run_step="15"
ECHO ---------------------------------------------------- >> %month_log%
ECHO ------------ 壓縮 hosts 檔案(1個檔案)------------ >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%7z% a -mx=9 -t7z D:\BACKUP\NET\hosts.%mame% D:\BACKUP\NET\hosts
if errorlevel 0 GOTO RESULT && "DEL /Q D:\BACKUP\NET\hosts"
if not errorlevel 0 GOTO RESULT
GOTO STEP_6
:STEP_6
SET /a run_step="16"
ECHO ---------------------------------------------------- >> %month_log%
ECHO ---------------- 輸出 備份完成 時間 ---------------- >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
ECHO 結束備份時間: >> %month_log%
TIME /T >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
set /a run_step=%run_step% + "1"
GOTO END
:END
SET month_log=
SET 7Z=
SET run_step=
SET sub_step=