請教關於DOS批次檔和7-ZIP批次壓縮的問題

顯示結果從第 1 筆 到 2 筆,共計 2 筆
  1. #1
    會員 tzoying 的大頭照
    註冊日期
    2001-11-10
    所在地區
    20M/5M
    討論區文章
    19

    問題 請教關於DOS批次檔和7-ZIP批次壓縮的問題

    1.小弟參考GOOGLE上的介紹,寫出兩個用於日常備份的批次檔
    其中有兩個地方怎麼改都無法順利執行..
    例如:
    %7z% a -mx=9 -t7z D:\X\A.idm.%date:~0,4%%date:~5,2%%date:~8,2%.7z D:\X\A.idm.200?????
    if errorlevel 0 "GOTO RESULT && DEL /Q D:\X\A.idm.200?????"
    if not errorlevel 0 SET sub_step=3

    先用7Z壓縮每日備份的檔案(EX: D:\X\A.idm.20080729....)
    假如成功則執行刪除原檔和輸出結果到LOG檔,失敗則是輸出問題到LOG檔
    其中DEL /Q D:\X\A.idm.200????? 不知為何一直無法正確執行,參考網上教學加上""一樣無法執行??
    而輸出到LOG檔的部份:
    ----------------------------------------------------
    ------------- 20080729 個人資料備份檔 --------------
    ----------------------------------------------------
    開始備份時間:
    下午 01:07
    ----------------------------------------------------
    -------- 壓縮 MSN表情符號、大頭貼、動畫快遞 --------
    ----------------------------------------------------
    ----------------------------------------------------
    ---------------- 輸出 備份完成 時間 ----------------
    ----------------------------------------------------
    結束備份時間:
    下午 01:07
    ----------------------------------------------------
    壓縮完成!!
    ︿︿︿︿︿︿
    壓縮結果不知為何會跑到最下方,應該如何改成如下方所示呢??
    ----------------------------------------------------
    -------- 壓縮 MSN表情符號、大頭貼、動畫快遞 --------
    ----------------------------------------------------
    壓縮完成!!
    ----------------------------------------------------
    ----------- 壓縮 密碼管理資料(2個檔案)-----------
    ----------------------------------------------------
    壓縮完成!!
    ----------------------------------------------------
    ---------------- 輸出 備份完成 時間 ----------------
    ----------------------------------------------------
    結束備份時間:
    下午 01:07
    ----------------------------------------------------


    2.關於7-ZIP批次壓縮的部份,GOOGLE很久找到一個批次檔
    @echo off
    set a=c:\program files\7-zip\7z.exe
    for %%a in (%*) do (
    dir /a %%a|findstr "DIR" >nul 2>nul && (
    "%a%" a -tzip "%%~dpa%%~na.zip" "%%~a\*"
    ) || (
    "%a%" a -tzip "%%~dpa%%~na.zip" %%a
    )
    )
    存成批次檔放到SendTo裡,是可以正確的批次壓縮成ZIP檔
    可小弟改成如下所示后:
    @echo off
    set a=C:\Program Files\7-Zip\7z.exe
    for %%a in (%*) do (
    dir /a %%a|findstr "DIR" >nul 2>nul && (
    "%a%" a -t7z "%%~dpa%%~na.7z" "%%~a\*"
    ) || (
    "%a%" a -t7z "%%~dpa%%~na.7z" %%a
    )
    )
    檔少時可以正確執行,一多(我是一次壓一百多個)就會出現錯誤,不知是哪裡出錯呢?


    以上兩個問題還請各位電腦達人幫忙解惑,感激不盡 ORZ


    附上兩個資料備份的批次檔,也請大伙不吝幫忙改善一下 ^^

    ===============================
    @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 /a run_step=0
    SET sub_step=0
    if exist %month_log% del %month_log%
    GOTO CHOICE

    :CHOICE
    if "%run_step%"=="0" GOTO STEP_0
    if "%run_step%"=="1" GOTO STEP_1
    if "%run_step%"=="2" GOTO STEP_2
    if "%run_step%"=="3" GOTO STEP_3_1
    if "%run_step%"=="4" GOTO STEP_4_1
    if "%run_step%"=="5" GOTO STEP_5
    if "%run_step%"=="6" GOTO STEP_6
    if "%run_step%"=="7" GOTO END
    GOTO END

    :STEP_0
    SET run_step=0
    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=1
    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]
    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=2
    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?????
    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=3
    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?????
    if errorlevel 0 "GOTO RESULT && DEL /Q D:\BACKUP\PassWord\my.idm.200?????"
    if not errorlevel 0 SET sub_step=3
    GOTO STEP_3_2

    :STEP_3_2
    SET sub_step=
    %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?????
    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=4
    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?????
    if errorlevel 0 "GOTO RESULT && DEL /Q D:\BACKUP\Game\OfflineList_conf.ini.200?????"
    if not errorlevel 0 SET sub_step=4
    GOTO STEP_4_2

    :STEP_4_2
    SET sub_step=
    %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?????
    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=5
    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
    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=6
    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

    :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%"=="3" GOTO STEP_3_2
    IF "%sub_step%"=="4" GOTO STEP_4_2
    GOTO CHOICE


    :END
    SET month_log=
    SET 7Z=
    SET run_step=
    SET sub_step=

    ================================

    @echo off

    SET day_log="D:\LOG\每日資料備份_%date:~0,4%%date:~5,2%%date:~8,2%.log"

    IF EXIST %day_log% del %day_log%

    ECHO ---------------------------------------------------- >> %day_log%
    ECHO ------------- %date:~0,4%%date:~5,2%%date:~8,2% 個人資料備份檔 -------------- >> %day_log%
    ECHO ---------------------------------------------------- >> %day_log%
    echo 開始備份時間: >> %day_log%
    TIME /T >> %day_log%


    ECHO ---------------------------------------------------- >> %day_log%
    ECHO -------- 備份 MSN表情符號、大頭貼、動畫快遞 -------- >> %day_log%
    ECHO ---------------------------------------------------- >> %day_log%
    RD /S/Q D:\BACKUP\MSN\[email protected]\
    XCOPY "C:\Documents and Settings\my\Local Settings\Application Data\Microsoft\Messenger\[email protected]\ObjectStore" "D:\BACKUP\MSN\[email protected]\ObjectStore" /D /H /I /S /Y
    ECHO 備份完成!! >> %day_log%

    ECHO ---------------------------------------------------- >> %day_log%
    ECHO ------------- 備份 記帳資料(1個檔案)------------- >> %day_log%
    ECHO ---------------------------------------------------- >> %day_log%
    ECHO D:\BACKUP\Charge\MyMoneyData.mdb >> %day_log%
    COPY D:\BACKUP\Charge\MyMoneyData.mdb D:\BACKUP\Charge\MyMoneyData.mdb.%date:~0,4%%date:~5,2%%date:~8,2% /y >> %day_log%


    ECHO ---------------------------------------------------- >> %day_log%
    ECHO ----------- 備份 密碼管理資料(2個檔案)----------- >> %day_log%
    ECHO ---------------------------------------------------- >> %day_log%
    ECHO D:\BACKUP\PassWord\my.idm >> %day_log%
    COPY D:\BACKUP\PassWord\my.idm D:\BACKUP\PassWord\my.idm.%date:~0,4%%date:~5,2%%date:~8,2% /y >> %day_log%
    ECHO D:\BACKUP\PassWord\my.apw >> %day_log%
    COPY D:\BACKUP\PassWord\my.apw D:\BACKUP\PassWord\my.apw.%date:~0,4%%date:~5,2%%date:~8,2% /y >> %day_log%


    ECHO ---------------------------------------------------- >> %day_log%
    ECHO ------------ 備份 模擬器資料(2個檔案)------------ >> %day_log%
    ECHO ---------------------------------------------------- >> %day_log%
    ECHO D:\Share\_Emu_\OfflineList\conf.ini >> %day_log%
    COPY D:\Share\_Emu_\OfflineList\conf.ini D:\BACKUP\Game\OfflineList_conf.ini.%date:~0,4%%date:~5,2%%date:~8,2% /y >> %day_log%
    ECHO D:\Share\_Emu_\clrmamepro\cmpro.ini >> %day_log%
    COPY D:\Share\_Emu_\clrmamepro\cmpro.ini D:\BACKUP\Game\clrmamepro_cmpro.ini.%date:~0,4%%date:~5,2%%date:~8,2% /y >> %day_log%


    ECHO ---------------------------------------------------- >> %day_log%
    ECHO ------------ 備份 hosts 檔案(1個檔案)------------ >> %day_log%
    ECHO ---------------------------------------------------- >> %day_log%
    ECHO C:\WINDOWS\system32\drivers\etc\hosts >> %day_log%
    COPY C:\WINDOWS\system32\drivers\etc\hosts D:\BACKUP\NET\ /Y >> %day_log%


    ECHO ---------------------------------------------------- >> %day_log%
    ECHO ---------------- 輸出 備份完成 時間 ---------------- >> %day_log%
    ECHO ---------------------------------------------------- >> %day_log%
    ECHO 結束備份時間: >> %day_log%
    TIME /T >> %day_log%
    ECHO ---------------------------------------------------- >> %day_log%

    ===================================



  2. #2
    萌え尽き症候群 琥珀 的大頭照
    註冊日期
    2002-08-17
    所在地區
    中和區
    討論區文章
    10,022
    goto 不能這樣做。無論是寫批次檔還是寫程式,在非必要的情況下,不要用 goto 指令。
    2002.8.17 - 2024.1.9

    繪本:Ghost cemetery



    畫集:日めくり 365


    名簿:創彩少女庭園

類似的主題

  1. 請問DOS批次檔的寫法
    作者:oxoxoxo 所在討論版:-- HELP ME 電 腦 軟 硬 體 急 救 版
    回覆: 2
    最後發表: 2007-06-11, 08:47 PM
  2. 問一個dos批次檔的寫法
    作者:ccyds 所在討論版:-- Windows 討 論 版
    回覆: 3
    最後發表: 2003-10-30, 10:59 PM
  3. 【求助】請教關於2000 排程的問題?
    作者:yuping 所在討論版:-- Windows 討 論 版
    回覆: 4
    最後發表: 2003-09-26, 08:26 PM
  4. 起問DOS批次檔要如何寫
    作者:napolen2000 所在討論版:-- HELP ME 電 腦 軟 硬 體 急 救 版
    回覆: 3
    最後發表: 2003-07-31, 11:01 PM
  5. 寫Windows批次檔案的問題
    作者:oldcatpczone 所在討論版:-- HELP ME 電 腦 軟 硬 體 急 救 版
    回覆: 1
    最後發表: 2002-01-09, 11:34 PM

 

此網頁沒有從搜尋引擎而來的訪客

發表文章規則

  • 不可以發表新主題
  • 不可以回覆文章
  • 不可以上傳附加檔案
  • 不可以編輯自己的文章
  •