linux脚本备份文件夹到windows,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

副本如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值