
分享自己寫的利用計劃任務功能自動文件備分操作的BAT腳本等級不夠其它版本發不了貼,只好發這了另外,不知道是不是等級原因發不上來圖,本想把幾個效果圖放上來,只好圖放去貼吧了,鏈接在此http://tieba.baidu.com/p/4423328647去年因為公司需要自己做的一個腳本,當時也是到處查了不少資料,印象中好象不少都和批處理之家有淵源,現在也算回家啦。腳本目前在Xp主機上已穩定運行了大半年,只要網絡共享沒問題其它都基本無需人工干預,這個腳本是利用計劃任務激發的,不能駐留內存,運行時間完全由計劃任務控制,運行環境需要winRAR5.0版本自帶的winrar.exe文件,其它版本未嘗試,不過應該問題不大。功能上嘛,它可以每次運行時自動備分一個TXT文件下按固定格式寫好的一個目錄下的,復數個擴展名結尾的文件類型到,這個TXT文件里指定的目錄(格式為“備份至某目錄”;“備份目標文件目錄”,如:“成本部_共用盤;192.168.1.1公用盤”,有多少行就備分多少目錄),腳本會自動保存同名文件的最近的兩個改動版本且以“文件名_年月日時分”重命名,并自動把更舊版本的同名文件移動到另一個備份目錄的RAR壓縮文件里,壓縮文件以“備份至某目錄”_“XX年XX月”命名和生成。備份同時也會自動生成備份日志到備份目的地目錄。大概功能就是以上,需要注意的是腳本不能復制目標目錄的目錄樹結構,腳本識別文件版本完全以文件A屬性為準,不能識別文件大小 和 比較文件內容,TXT文件中需要符號的話最好只用下畫線,目標目錄和目的目錄必須用半角分號。
nclick="copycode($('code0'));">復制代碼
- echo off
- rem V1.0 基本功能完成
- rem V1.1 加入了開始倒計時提示,優化了變量操作,讓適用于多人時改動更加容易。
- rem V1.2 進一步優化變量,讓適用于多人時操作更少。
- rem V1.3 加入了備分日志功能
- rem v1.4 修正了時間獲得上的空格錯誤
- rem v1.4.2 重設log日志生成到備分目錄
- rem v2.0 1可同時備分多個任務,2更改為按文件名分別保留2個最近的文件版本,3其它改動。
- rem v2.1 改動了容易出錯的find語句,優化了日志生成:備份文件列表等。
- rem v2.2 按人和月份區分壓縮文件包,只保留最近7天的日志,其它刪除到壓縮文件。
- rem v2.3 用穩定性更好的copy+attrib組合代替xcopy+rename組合,修正了備份目標盤存在子目錄時不能每個文件獲得保留最近兩個文件信息造成的錯誤.
- rem v2.4 日志中加入改名信息,增加對doc文件備分(共bat.txt.xls.doc)。
- rem v2.5 添加備份過程種的項目提示(某項開始,某項結束),文件備份前自動去HRS屬性。
- rem v2.6 增加了部分注釋,取消測試版本提示,備分文件確認,dir只對擴展名前三個字母有效,共.bat.txt.xls.xlsx.doc.docx
- set VER=V2.6
- cls
- for /l %%x in (9,-1,0) do (@ping -n 2 127.1 >nul 2>nul
- cls
- echo ============================================================================
- echo ===============9秒鐘后將會開始備分操作, =================
- echo ===============請勿請行其它操作。=================
- echo =============== 如需取消備分,按Ctrl+c。 =================
- echo ===============版本 %VER% =================
- echo ============================================================================
- echo =============== Waiting...%%x=================
- echo ============================================================================)
- cls
- echo ===========================================================================
- echo =============== 備分進行中……=================
- echo ===========================================================================
- echo off
- rem 需備分目錄(最后不帶)在bakname.txt文件中加入
- rem 備分至目錄(最后不帶)
- set pathbak=f:自動備分文件夾
- rem 備分文件回收站目錄(最后不帶)
- set bakbak=f:備分文件回收站
- rem 生成備分日志名
- set logname=%date:~5,2%月%date:~8,2%日%date:~11,3%備份日志.txt
- if %time:~0,2% leq 9 (set ftime=0%time:~1,1%%time:~3,2%%time:~6,2%) else (set ftime=%time:~0,2%%time:~3,2%%time:~6,2%)
- set day=%date:~2,2%%date:~5,2%%date:~8,2%
- for /f tokens=1,2 delims=; %%n in (bakname.txt) do (
- if not exist %pathbak%%%n (md %pathbak%%%n)
- echo=================================================================
- echo開始對《%%n》項目進行備份操作:
- echo ******%date%_%time%_備份日志****** >>%pathbak%%%n%logname%
- echo 需備分目錄%%o >>%pathbak%%%n%logname%
- echo 備分至目錄%pathbak%%%n >>%pathbak%%%n%logname%
- echo.>>%pathbak%%%n%logname%
- echo 本次需要備分的文件列表:>>%pathbak%%%n%logname%
- for /f delims= %%i in ('dir /b /s /aa %%o*.txt,%%o*.bat,%%o*.xls,%%o*.doc') do (
- echo %%~nxi>>%pathbak%%%n%logname%
- )
- echo.>>%pathbak%%%n%logname%
- for /f delims= %%f in ('dir /b /s /aa %%o*.txt,%%o*.bat,%%o*.xls,%%o*.doc') do (
- echo [[[[[[開始對文件%%~nxf進行備份: >>%pathbak%%%n%logname%
- attrib -h -r -s %%f
- copy /v /y %%f %pathbak%%%n%%~nf_%day%_%ftime%%%~xf >>%pathbak%%%n%logname%
- echo 如復制成功則改名為%%~nf_%day%_%ftime%%%~xf. >>%pathbak%%%n%logname%
- attrib -a %%f
- for /f delims= %%j in ('dir /s /b %%o%%~nf*') do (
- rem skip屬性調整同名文件保留的歷史版本數
- for /f skip=2 delims= %%h in ('dir /o-d /tc /b %pathbak%%%n%%~nf*') do (
- rar a -df -ep1 %bakbak%%%n_%date:~2,2%年%date:~5,2%月.rar%pathbak%%%n%%~nxh >>%pathbak%%%n%logname%
- )
- )
- echo 文件%%~nxf操作結束]]]]]]>>%pathbak%%%n%logname%
- echo.>>%pathbak%%%n%logname%
- echo 文件%%~nxf備份操作結束.
- )
- echo ******本次備分結束****** >>%pathbak%%%n%logname%
- echo.>>%pathbak%%%n%logname%
- echo.>>%pathbak%%%n%logname%
- echo.>>%pathbak%%%n%logname%
- rem 通過skip參數設定,只保留最近7天的日志,其它刪除到壓縮文件
- for /f skip=7 delims= %%b in ('dir /o-d /tc /b /s %pathbak%%%n??月??日星期*.txt') do rar a -df -ep1 -ap備份日志 %bakbak%%%n_%date:~2,2%年%date:~5,2%月.rar%%b
- echo 《%%n》項目備份操作結束。
- echo=================================================================
- echo.
- echo.
- echo.
- )
- @echo off
- echo =============================================================================
- echo ============== 備份操作完成 ===================
- echo ============== 3秒后本自動窗口關閉===================
- echo =================================
- echo ==============測試版本 %VER% ===================
- echo =============================================================================
- @ping -n 5 127.1 >nul 2>nul

