瀏覽單個文章
tzoyiing
Basic Member
 
tzoyiing的大頭照
 

加入日期: May 2004
您的住址: ROC
文章: 26
引用:
作者justliker
if errorlevel 0 echo a & echo b
if errorlevel 0 (echo a) & (echo b)
if errorlevel 0 echo a & "echo b"
if errorlevel 0 "echo a" & "echo b"
if errorlevel 0 echo a||echo b
僅前兩個能正常顯示a 跟 b
而echo a||echo b只會執行echo a....
所以在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
加上%run_step%來判斷該刪除哪些檔案

可能是變數名稱的問題
把SET 7Z="C:\Program Files\7-Zip\7z.exe" 換成 set aa="C:\Program Files\7-Zip\7z.exe"應該就可以

真是太感謝了,變數名換掉后就正常了,感激再感激 ^^

:RESULT1
if errorlevel 255 GOTO ECHO 使用者中斷!! >> %month_log%

當errorlevel 大於或等於255則條件成立
所以應當用if %errorlevel%==255 goto...
另外RD 只能刪除空資料夾

ps.作業系統:windows 2000

if %errorlevel%==255的部份,用if errorlevel 255應該就可以表示,所以就沒改
另本想用deltree刪除目錄,可是xp沒有這個檔案,所以改成RD加參數/S/Q


終於修改到可以正常執行了 ^^
雖然還有些不太滿意,如:
----------------------------------------------------
-------- 壓縮 MSN表情符號、大頭貼、動畫快遞 --------
----------------------------------------------------
壓縮完成!!
----------------------------------------------------
------------- 壓縮 記帳資料(1個檔案)-------------
----------------------------------------------------
壓縮完成!!
不知如何將「壓縮完成!! 」改輸出成「備份的檔名 壓縮完成!! 」,繼續尋找解答ing~

還有就是7z壓縮時,沒有檔案可壓卻仍會壓成一個空檔,傳回值依然是0,不知該如何解決?!



rem ---===---===---===--- 每月資料備份壓縮的批次檔 ---===---===---===---

@echo off
rem --- 指定紀錄檔的名稱與路徑 ---
SET month_log=D:\LOG\每月資料備份壓縮_%date:~0,4%%date:~5,2%%date:~8,2%.log
rem ------------------------------
rem --- 指定7-ZIP所在的目錄與檔名 ---
SET aa="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%
GOTO CHOICE
rem /////////////////////////

rem ****** 執行步驟 ******
:STEP_2
ECHO ---------------------------------------------------- >> %month_log%
ECHO -------- 壓縮 MSN表情符號、大頭貼、動畫快遞 -------- >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%aa% a -mx=9 -t7z D:\BACKUP\MSN\[email protected].%date:~0,4%%date:~5,2%%date:~8,2%.7z D:\BACKUP\MSN\[email protected]
GOTO RESULT1

:STEP_3
ECHO ---------------------------------------------------- >> %month_log%
ECHO ------------- 壓縮 記帳資料(1個檔案)------------- >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%aa% 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?????
GOTO RESULT1

:STEP_4_1
ECHO ---------------------------------------------------- >> %month_log%
ECHO ----------- 壓縮 密碼管理資料(2個檔案)----------- >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%aa% 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?????
GOTO RESULT1

:STEP_4_2
%aa% 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?????
GOTO RESULT1

:STEP_5_1
ECHO ---------------------------------------------------- >> %month_log%
ECHO ------------ 壓縮 模擬器資料(2個檔案)------------ >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%aa% 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?????
GOTO RESULT1

:STEP_5_2
%aa% 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?????
GOTO RESULT1

:STEP_6
ECHO ---------------------------------------------------- >> %month_log%
ECHO ------------ 壓縮 hosts 檔案(1個檔案)------------ >> %month_log%
ECHO ---------------------------------------------------- >> %month_log%
%aa% a -mx=9 -t7z D:\BACKUP\NET\hosts.%date:~0,4%%date:~5,2%%date:~8,2%.7z D:\BACKUP\NET\hosts
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%
GOTO END
rem \\\\\\\\\\\\\\\\\\\\\\\\\\

rem --- 選擇批次檔執行步驟 ---
:CHOICE
set /a run_step=%run_step% + 1
if "%run_step%"=="1" GOTO STEP_1
if "%run_step%"=="2" GOTO STEP_2
if "%run_step%"=="3" GOTO STEP_3
if "%run_step%"=="4" GOTO STEP_4_1
if "%run_step%"=="5" GOTO STEP_4_2
if "%run_step%"=="6" GOTO STEP_5_1
if "%run_step%"=="7" GOTO STEP_5_2
if "%run_step%"=="8" GOTO STEP_6
if "%run_step%"=="9" GOTO STEP_7
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
舊 2008-07-30, 03:52 PM #10
回應時引用此文章
tzoyiing離線中