remarklin 寫:
你的IF用錯嘍.....應該是寫成
if errorlevel 0 (
DEL /Q D:\BACKUP\PassWord\wakaka.idm.200?????
GOTO RESULT
)
GOTO要後做,不然會先GOTO就不會執行你的DEL了
if的語法參考微軟的說明:
http://technet.microsoft.com/zh-tw/library/bb490920(en-us,TechNet.10).aspx一些判斷式
if errorlevel 0 (...)
if not errorlevel 0 (...)
改成if errorlevel 0 (...) else (...)
就可以了
甚至你有的也算累贅的寫法,例如
if errorlevel 0 "GOTO RESULT && DEL /Q D:\BACKUP\Charge\MyMoneyData.mdb.200?????"
if not errorlevel 0 GOTO RESULT
GOTO STEP_3_1
GOTO STEP_3_1根本跑不到
同樣的意義可以寫成
if errorlevel 0 DEL /Q D:\BACKUP\Charge\MyMoneyData.mdb.200?????
GOTO RESULT
跟你的邏輯意義完全一樣(不管errorlevel多少,反正都要GOTO RESULT...)
之前的批次檔問題很多....汗
一改再改后,情況有所改善,不過還是有些問題 @@"
1.dos視窗內跑完批次檔后,發現7z完全不會執行,會出現如下的錯誤:
============================
C:\>Z\BACKUP\PassWord\my.idm.20080730.7z D:\BACKUP\PassWord\my.idm.200?????
系統找不到指定的路徑。
============================
可若將該行剪下單獨執行卻又可以正確跑完,不知是何緣故?! @@"
2.另外紀錄檔的部份也有問題,7z沒執行成功卻出現一堆錯誤&正確的代碼?!
----------------------------------------------------
------------- 20080730 個人資料備份檔 --------------
----------------------------------------------------
開始備份時間:
上午 09:47
----------------------------------------------------
-------- 壓縮 MSN表情符號、大頭貼、動畫快遞 --------
----------------------------------------------------
發生嚴重錯誤!!
檔案被鎖住,無法壓縮!!
壓縮完成!!
----------------------------------------------------
------------- 壓縮 記帳資料(1個檔案)-------------
----------------------------------------------------
發生嚴重錯誤!!
檔案被鎖住,無法壓縮!!
壓縮完成!!
----------------------------------------------------
----------- 壓縮 密碼管理資料(2個檔案)-----------
----------------------------------------------------
發生嚴重錯誤!!
檔案被鎖住,無法壓縮!!
壓縮完成!!
發生嚴重錯誤!!
檔案被鎖住,無法壓縮!!
壓縮完成!!
----------------------------------------------------
------------ 壓縮 模擬器資料(2個檔案)------------
----------------------------------------------------
發生嚴重錯誤!!
檔案被鎖住,無法壓縮!!
壓縮完成!!
發生嚴重錯誤!!
檔案被鎖住,無法壓縮!!
壓縮完成!!
----------------------------------------------------
------------ 壓縮 hosts 檔案(1個檔案)------------
----------------------------------------------------
發生嚴重錯誤!!
檔案被鎖住,無法壓縮!!
壓縮完成!!
----------------------------------------------------
---------------- 輸出 備份完成 時間 ----------------
----------------------------------------------------
結束備份時間:
上午 09:47
----------------------------------------------------
批次檔:
rem ---===---===---===--- 每月資料備份壓縮的批次檔 ---===---===---===---
@echo on
rem --- 指定紀錄檔的名稱與路徑 ---
SET month_log=D:\LOG\每月資料備份壓縮_%date:~0,4%%date:~5,2%%date:~8,2%.log
rem ------------------------------
rem --- 指定7-ZIP所在的目錄與檔名 ---
SET 7Z="C:\Program Files\7-Zip\7z.exe"
REM -------------------------------------
SET /a run_step=0
if exist %month_log% del %month_log%
GOTO CHOICE
rem ////// 紀錄檔的檔頭 //////
:STEP_1
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%
set /a run_step=%run_step% + 1
GOTO CHOICE
rem /////////////////////////
rem ****** 執行步驟 ******
:STEP_2
ECHO ---------------------------------------------------- >> %month_log%
ECHO -------- 壓縮 MSN表情符號、大頭貼、動畫快遞 -------- >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%7Z% a -mx=9 -t7z D:\BACKUP\MSN\
[email protected].%date:~0,4%%date:~5,2%%date:~8,2%.7z D:\BACKUP\MSN\
[email protected]set /a run_step=%run_step% + 1
GOTO RESULT1
:STEP_3
ECHO ---------------------------------------------------- >> %month_log%
ECHO ------------- 壓縮 記帳資料(1個檔案)------------- >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%7Z% a -mx=9 -t7z D:\BACKUP\Charge\MyMoneyData.mdb.%date:~0,4%%date:~5,2%%date:~8,2%.7z D:\BACKUP\Charge\MyMoneyData.mdb.200?????
set /a run_step=%run_step% + 1
GOTO RESULT1
:STEP_4_1
ECHO ---------------------------------------------------- >> %month_log%
ECHO ----------- 壓縮 密碼管理資料(2個檔案)----------- >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%7Z% a -mx=9 -t7z D:\BACKUP\PassWord\my.idm.%date:~0,4%%date:~5,2%%date:~8,2%.7z D:\BACKUP\PassWord\my.idm.200?????
set /a run_step=%run_step% + 1
GOTO RESULT1
:STEP_4_2
%7Z% a -mx=9 -t7z D:\BACKUP\PassWord\my.apw.%date:~0,4%%date:~5,2%%date:~8,2%.7z D:\BACKUP\PassWord\my.apw.200?????
set /a run_step=%run_step% + 1
GOTO RESULT1
:STEP_5_1
ECHO ---------------------------------------------------- >> %month_log%
ECHO ------------ 壓縮 模擬器資料(2個檔案)------------ >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%7Z% a -mx=9 -t7z D:\BACKUP\Game\OfflineList_conf.ini.%date:~0,4%%date:~5,2%%date:~8,2%.7z D:\BACKUP\Game\OfflineList_conf.ini.200?????
set /a run_step=%run_step% + 1
GOTO RESULT1
:STEP_5_2
%7Z% a -mx=9 -t7z D:\BACKUP\Game\clrmamepro_cmpro.ini.%date:~0,4%%date:~5,2%%date:~8,2%.7z D:\BACKUP\Game\clrmamepro_cmpro.ini.200?????
set /a run_step=%run_step% + 1
GOTO RESULT1
:STEP_6
ECHO ---------------------------------------------------- >> %month_log%
ECHO ------------ 壓縮 hosts 檔案(1個檔案)------------ >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%7Z% a -mx=9 -t7z D:\BACKUP\NET\hosts.%date:~0,4%%date:~5,2%%date:~8,2%.7z D:\BACKUP\NET\hosts
set /a run_step=%run_step% + 1
GOTO RESULT1
rem **********************
rem \\\\\\ 紀錄檔的檔尾 \\\\\\
:STEP_7
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
rem \\\\\\\\\\\\\\\\\\\\\\\\\\
rem --- 選擇批次檔執行步驟 ---
:CHOICE
if "%run_step%"=="0" GOTO STEP_1
if "%run_step%"=="1" GOTO STEP_2
if "%run_step%"=="2" GOTO STEP_3
if "%run_step%"=="3" GOTO STEP_4_1
if "%run_step%"=="4" GOTO STEP_4_2
if "%run_step%"=="5" GOTO STEP_5_1
if "%run_step%"=="6" GOTO STEP_5_2
if "%run_step%"=="7" GOTO STEP_6
if "%run_step%"=="8" GOTO STEP_7
if "%run_step%" GEQ "9" GOTO END
GOTO END
rem --------------------------
rem +++ 壓縮結果判斷1: 將7-ZIP的傳回值寫入紀錄檔 +++
:RESULT1
IF ERRORLEVEL 255 GOTO ECHO 使用者中斷!! >> %month_log%
IF ERRORLEVEL 8 ECHO 記憶體不足!! >> %month_log%
IF ERRORLEVEL 7 ECHO 壓縮命令列錯誤!! >> %month_log%
IF ERRORLEVEL 2 ECHO 發生嚴重錯誤!! >> %month_log%
IF ERRORLEVEL 1 ECHO 檔案被鎖住,無法壓縮!! >> %month_log%
IF ERRORLEVEL 0 ECHO 壓縮完成!! >> %month_log% && GOTO RESULT2
GOTO CHOICE
rem +++ 壓縮結果判斷2:壓縮成功則刪除相應的備份檔 +++
:RESULT2
if "%run_step%"=="2" RD /S/Q D:\BACKUP\MSN\
[email protected]if "%run_step%"=="3" DEL /Q D:\BACKUP\Charge\*.*.200?????
if "%run_step%"=="4" DEL /Q D:\BACKUP\PassWord\*.idm.200?????
if "%run_step%"=="5" DEL /Q D:\BACKUP\PassWord\*.apw.200?????
if "%run_step%"=="6" DEL /Q D:\BACKUP\Game\OfflineList_conf.ini.200?????
if "%run_step%"=="7" DEL /Q D:\BACKUP\Game\clrmamepro_cmpro.ini.200?????
if "%run_step%"=="8" DEL /Q D:\BACKUP\NET\hosts
GOTO CHOICE
rem ++++++++++++++++++++++++++++++++++++++++++++++++++
:END