windows 批處理備份目錄指令碼
以下是需要備份檔案的一個bat 批處理指令碼,備份昨天C:\Users\Administrator\Desktop\\111\2020\03\05目錄下面的檔案,
需要寫一個批處理檔案,首先考慮需要獲取昨天的日期,以及建立一個日期的目錄存放備份,檢視要備份的檔案個數檔案的大小,
備份完的檔案大小個數的多少 ,在進行前後的比較一下,程式碼如下:
rem: "author is czb"
rem: "create scripts time 2020-03-05"
@echo off
set date_time=%date:~0,4%%date:~5,2%%date:~8,2%_0%time:~1,1%%time:~3,2%%time:~6,2%
set suiji=%random%
echo initing...........
rem:"獲取昨天的時間"
@echo off
set YE=%date:~0,4%
set MO=%date:~5,2%
set DA=%date:~8,2%
set DG=1
set/a vY1=%YE% %% 400
set/a vY2=%YE% %% 4
set/a vY3=%YE% %% 100
if %vY1%==0 (set var=true) else (if %vY2%==0 (if %vY3%==0 (set var=false) else (set var=true)) else (set var=false))
set LY=%YE%
set LM=%MO%
if %MO:~0,1%==0 (set MO=%MO:~1,1%)
if %DA:~0,1%==0 (set DA=%DA:~1,1%)
if %DA% GTR %DG% (set/a LD=%DA%-%DG%) else (
if %MO%==1 (set/a LY=%YE%-1) & (set/a LM=12) & (set/a LD=31+%DA%-%DG%) else (
set/a LM=%MO%-1
if %MO%==3 (if %var%==false (set/a LD=28+%DA%-%DG%) else (set/a LD=29+%DA%-%DG%))
for %%a in (2 4 6 8 9 11) do (if "%MO%"=="%%a" (set/a LD=31+%DA%-%DG%))
for %%b in (5 7 10 12) do (if "%MO%"=="%%b" (set/a LD=30+%DA%-%DG%))))
if %LM% LSS 10 set LM=0%LM:~-1%
if %LD% LSS 10 set LD=0%LD:~-1%
set strLstDt=%LY%%LM%%LD%
echo 昨天的日期為:%strLstDt%
echo.
rem:"dirPath定義預備份檔案的路徑(%LY%/%LM%/%LD% 固定格式) tarPath定義備份檔案的路徑 logpath定義備份時產生的日誌路徑"
set dirPath=C:\Users\Administrator\Desktop\新建資料夾\111\%LY%/%LM%/%LD%
set tarPath=C:\Users\Administrator\Desktop\新建資料夾
set logpath=C:\Users\Administrator\Desktop\新建資料夾\logs
rem:"檢視預備份檔案的個數以及大小"
cd %dirPath%
setlocal enabledelayedexpansion
set /a countbegin = 0
set /a file1sizebegin = 0
for /f %%i in ('dir /b /s /a-d') do (
set /a countbegin=countbegin+1
set /a file1sizebegin=file1sizebegin+%%~zi
)
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
echo 預備份目錄%cd% 檔案數:!countbegin!個 檔案大小和:!file1sizebegin!個位元組 >>%logpath%\"%strLstDt%_%suiji%".log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
)
popd
rem:"建立備份目錄以及備份預備份的檔案"
set str_time_first_bit="%time:~0,1%"
if %str_time_first_bit%==" " (
set str_date_time=%date:~0,4%%date:~5,2%%date:~8,2%_0%time:~1,1%%time:~3,2%%time:~6,2%
)else (
set str_date_time=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
)
echo The folder is about to be created: %strLstDt%_%suiji%_backups
set targetpath="%tarPath%"\%strLstDt%_%suiji%_backups
mkdir "%targetpath%"
set copytimebegin=%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
echo 建立要備份的目錄: %targetpath% 成功 !!!! >>%logpath%\"%strLstDt%_%suiji%".log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
set a=%time%
echo 開始執行備份,開始備份的時間為%copytimebegin%>>%logpath%\"%strLstDt%_%suiji%".log
echo D|xcopy %dirPath%\*.* %targetpath% /s /q
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
echo 備份檔案到 %targetpath% 成功 !!!!>>%logpath%\%strLstDt%_%suiji%.log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
set copytimeend=%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%
set b=%time%
echo 結束執行備份,結束備份的時間為%copytimeend%>>%logpath%\"%strLstDt%_%suiji%".log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
rem:"檢視備份檔案的個數以及大小"
cd "%targetpath%"
setlocal enabledelayedexpansion
set /a count = 0
set /a file1size = 0
for /f %%i in ('dir /b /s /a-d') do (
set /a count=count+1
set /a file1size=file1size+%%~zi
)
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
echo 備份目錄%cd% 檔案數:!count!個 檔案大小和:!file1size!個位元組 >>%logpath%\"%strLstDt%_%suiji%".log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
)
popd
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
rem :"計算開始備份到結束備份總共花費的時間"
@echo off
set /a h1=%a:~0,2%
set /a m1=1%a:~3,2%-100
set /a s1=1%a:~6,2%-100
set /a h2=%b:~0,2%
set /a m2=1%b:~3,2%-100
set /a s2=1%b:~6,2%-100
if %h2% LSS %h1% set /a h2=%h2%+24
set /a ts1=%h1%*3600+%m1%*60+%s1%
set /a ts2=%h2%*3600+%m2%*60+%s2%
set /a ts=%ts2%-%ts1%
set /a h=%ts%/3600
set /a m=(%ts%-%h%*3600)/60
set /a s=%ts%%%60
echo 本次備份!count!個檔案成功!!!備份總共耗時的時間為%h%小時%m%分%s%秒 >>%logpath%\"%strLstDt%_%suiji%".log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>%logpath%\"%strLstDt%_%suiji%".log
echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>%logpath%\"%strLstDt%_%suiji%".log
rem : 校驗預備份檔案與備份檔案
if %countbegin% == %count% if %file1sizebegin% == %file1size% (echo 預備份檔案的個數、檔案的大小 與 備份檔案的個數、大小相等,此備份校驗成功 !!!!>>%logpath%\"%strLstDt%_%suiji%".log)
else (
echo 此備份備份失敗 !!!!
)
echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>%logpath%\"%strLstDt%_%suiji%".log
echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>>%logpath%\"%strLstDt%_%suiji%".log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
echo ===============================================================================================>>%logpath%\"%strLstDt%_%suiji%".log
exit
副本如下:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30345407/viewspace-2678822/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows邏輯備份-EXPDP(保留5天內邏輯備份)批處理指令碼Windows指令碼
- 部分Windows批處理指令碼整理Windows指令碼
- 保留最新N份備份目錄指令碼指令碼
- 批處理檔備份oracleOracle
- 恢復目錄資料庫備份指令碼資料庫指令碼
- windows下通過批處理備份oracle資料庫WindowsOracle資料庫
- windows下刪除前一天備份批處理Windows
- bat批處理常用指令碼BAT指令碼
- BAT 批處理指令碼 教程BAT指令碼
- windows mysqldump備份指令碼WindowsMySql指令碼
- windows rman備份指令碼Windows指令碼
- Windows 快速備份指令碼Windows指令碼
- 備份指令碼--紀錄指令碼
- Windows登錄檔中修改UAC(使用者賬號控制)及批處理指令碼Windows指令碼
- 用批處理檔案執行備份
- Windows下RMAN備份指令碼Windows指令碼
- 使用批處理指令碼或SHELL配合SQL指令碼指令碼SQL
- 編寫簡單的windows bat批處理指令碼檔案WindowsBAT指令碼
- 關於批處理(bat)資料庫備份BAT資料庫
- WINDOWS自動打包目錄指令碼 複製到遠端備份伺服器儲存Windows指令碼伺服器
- Windows批處理命令Windows
- windows下自動備份指令碼(exp)Windows指令碼
- rman 自動備份指令碼-windows指令碼Windows
- Windows批處理學習(二)——批處理(3)薦Windows
- 監控目錄備份是否成功通用指令碼backup_monitor.sh指令碼
- windows批處理之一:字串處理Windows字串
- windows 全量+增量備份指令碼batWindows指令碼BAT
- MySQL:Windows下分庫備份指令碼MySqlWindows指令碼
- windows下rman自動備份指令碼Windows指令碼
- windows 下的Oracle 冷備份指令碼WindowsOracle指令碼
- Windows批處理檔案Windows
- 批處理指令碼來修復並開啟Windows 7中的Windows Defender防火牆指令碼Windows防火牆
- 備份指令碼指令碼
- 《使用shell位置變數進行目錄檔案的備份小指令碼》變數指令碼
- 使用Windows指令碼進行邏輯備份Windows指令碼
- windows部分聯機自動備份指令碼!Windows指令碼
- Windows環境PgSql自動備份指令碼WindowsSQL指令碼
- 遞迴處理複製變數目錄按原路徑複製到新目錄的指令碼遞迴變數指令碼