Svn备份与Bandizip压缩批处理程序
目的:为了定时备份多个svn仓库数据,使用批处理程序进行备份并Bandizip进行压缩保存到指定位置,操作完成后弹出成功提示。
为了完成以上目标,需要了解以下几个方面:
- 批处理命令
- Svn命令
- Bandizip命令
1. 批处理命令
echo 命令
打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo命令将显示当前回显设置。
语法
echo [{on|off}] [message]示例:
@echo off / echo hello world
rem 命令
注释命令,类似于在C语言中的/--------/,它并不会被执行,只是起一个注释的作用,只有在编辑批处理时才会被看到,主要用于方便修改。
:: 也具有rem的功能,但::和rem还是有区别的。当关闭回显时,rem和::后的内容都不会显示;当打开回显时,rem后的内容会显示出来,然而::后的内容仍然不会显示。
语法
Rem [注释内容]示例:
Rem 你好。
pause 命令
暂停命令。运行 Pause 命令时,将显示下面的消息:
Press any key to continue. . .(或:请按任意键继续. . .)
示例:
@echo off:begincopy G:*.* d:\backecho 请插入另一张光盘...pausegoto begin
start 命令
调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。如:startcalc.exe即可打开Windows的计算器。
常用参数:
MIN 开始时窗口最小化
SEPARATE 在分开的空间内开始 16 位 Windows 程序
HIGH 在 HIGH 优先级类别开始应用程序
REALTIME 在 REALTIME 优先级类别开始应用程序
WAIT 启动应用程序并等候它结束
parameters 这些为传送到命令/程序的参数
执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。
set 命令
显示、设置或删除变量。
- 显示变量:set 或 set s 前者显示批处理当前已定义的所有变量及其值,后者显示所有以s开头的变量及值。
- 设置和调用变量:例如set aa=abcd,就是把aa定义为abcd。如果要调用这个变量,就把aa两边加上个百分号。
- 删除变量:set aa= 此句命令即可删除变量aa。若变量aa已被定义,则删除变量aa;若aa尚未定义,则此句命令无实质意义。
例如:
set aa=abcdecho %aa%pause
运行这段命令就会显示"abcd"
需要说明的是,批处理中的变量是不区分类型的,不需要像C语言中的变量那样还要区分int、float、char等。比如执行set aa=345后,变量aa的值既可以被视为数字345,也可以被视为字符串345。
set命令具有扩展功能,如用作交互输入、字符串处理、数值计算等,属于高级命令范畴。
for语句(循环结构)
for语句可以实现类似于C语言里面的循环结构,当然for语句的功能要更强大一点,通过不同的开关可以实现更多的功能。for语句有多个开关,不同开关将会实现不同的功能。
无开关
无开关的for语句能够对设定的范围内进行循环,是最基本的for循环语句。其命令格式为:FOR %%variable IN (set) DO command
其中,%%variable是批处理程序里面的书写格式,在DOS中书写为%variable,即只有一个百分号(%);set就是需要我们设定的循环范围,类似于C语言里面的循环变量;do后面的command就是循环所执行的命令,即循环体。
无开关for语句举例:@echo offfor %%i in (a,"b c",d) do echo %%ipause>nul开关/L
含开关/L的for语句,可以根据set里面的设置进行循环,从而实现对循环次数的直接控制。其命令格式为:
FOR /L %%variable IN (start,step,end) DO command
其中,start为开始计数的初始值,step为每次递增的值,end为结束值。当end小于start时,step需要设置为负数。
含开关/L的for语句举例(创建5个文件夹):@echo offfor /l %%i in (1,2,10) do md %%ipause
2. Svn命令
svnadmin dump
将文件系统的内容转储到标准输出。
概要
svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]描述
使用“dumpfile”可移植格式将文件系统的内容转储到标准输出,将反馈发送到标准错误,导出的修订版本从LOWER到UPPER。如果没有提供修订版本,会导出所有的修订版本树,如果只提供LOWER,导出一个修订版本树。
如果Subversion的转储文件很大,你可以使用--deltas来减小svnadmin创建的导出文件的大小。通过这个选项,就不会写出每次修订版本的内容,svnadmin dump只会写出版本之间的区别。然而,创建增量导出文件的坏处―对CPU的要求更高,svndumpfilter不可以对这个文件操作,而且非增量的转储文件可以更好的压缩。选项
--revision (-r)
--incremental
--quiet
--deltas例子
- 转储整个版本库:
svnadmin dump /usr/local/svn/repos SVN-fs-dump-format-version: 1 Revision-number: 0 * Dumped revision 0. Prop-content-length: 56 Content-length: 56 …
- 从版本库增量转储一个单独的事务:
svnadmin dump /usr/local/svn/repos -r 21 --incremental * Dumped revision 21. SVN-fs-dump-format-version: 1 Revision-number: 21 Prop-content-length: 101 Content-length: 101 …
3. Bandizip命令
# Bandizip.exe <archive>
# Bandizip.exe <command> [<switches>...] <archive> [<files>...] [<path_to_extract>]
# Bandizip.exe <bcommand> [<switches>...] [<files>...]
<archive> 压缩包
执行在设置中指定的操作。 通常只打开压缩包。
<Commands> 命令
a : 添加文件到压缩包
x : 用完整路径解压文件
t : 测试压缩包完整性
d : 删除压缩包中文件
c : 创建新档案(或覆盖现有文件)
cd: 显示“新建压缩包”对话框
<BCommands> 批处理命令
bc:要压缩的每个文件/文件夹名称。 若存在相同的压缩包名,则以“文件名(2)”格式创建压缩包。若未指定目标文件夹,则默认目标文件夹为原始文件或文件夹所在的路径。
bx: 将每个压缩包分别解压到目标文件夹中。 若未指定目标文件夹,则默认目标文件夹为每个压缩文件所在的路径。
bt: 测试压缩包
<Switches> 开关
- 停止开关扫描
-l:<0...9> 设置压缩级别(0:存储,5:默认,9:最大)
-r- 禁用递归(默认)
-r 启用递归子目录
-aoa 无需提示覆盖全部现有文件
-aos 跳过已有文件的解压
-aou 自动重命名解压的文件
(例如,name.txt将被重命名为name (2).txt)
-sfx:[{name}] 创建SFX压缩包
-zopfli 使用Zopfli作为默认压缩算法
-p:{password} 设置密码
-o:{dir} 指定目标文件夹
-y 全选“是”
-fmt:{fmt} 指定压缩格式
(zip, zipx, exe, tar, tgz, lzh, iso, 7z, gz, xz)
-v:{size} 指定分卷大小 (-v:1000000 -v:1440k -v:100MB ...)
<Switches> (仅针对Banzip)
-email 压缩并邮件发送
-target:dlg 显示“目标路径选择”对话框
-target:auto 智能解压到目标路径
-target:name 按压缩包名称解压到目标路径中文件夹下
示例
1. 打开压缩包
Bandizip.exe sample.zip
2. 新建压缩包(覆盖已有文件)
Bandizip.exe c c:\sample.zip c:\src\
Bandizip.exe c c:\sample.zip c:\src1\ c:\src2\
3. 添加文件到压缩包
Bandizip.exe a c:\sample.zip c:\src\sample.txt
Bandizip.exe a c:\sample.zip c:\src\sample1.txt c:\src\sample2.txt
Bandizip.exe a c:\sample.zip c:\src*.txt c:\src*.jpg
4. 删除压缩包中文件
Bandizip.exe d c:\sample.zip sample.txt
Bandizip.exe d c:\sample.zip *.txt
5. 将压缩包解压到目标路径
Bandizip.exe x -o:c:\dest\ c:\sample.zip
6. 添加文件到压缩包,并设置密码为Passw0rd,无提示覆盖全部已有文件并关闭对话框
Bandizip.exe a -y -p:Passw0rd test.zip c:\src d:\src
4. 完整代码
@echo off
::指定到Svn仓库目录
E:
set work_path=D:\SvnRepertory
set back_path=D:\SvnBack
set zip_path=D:\SvnBackPackage
cd %work_path% ::使用for循环读取仓库目录下的所有仓库文件夹名称,并进行循环备份
for /d %%s in (*.*) do (
echo %work_path%\%%s
svnadmin dump %work_path%\%%s > %back_path%\%%s.bak
) ::根据当前时间创建压缩包名称
set "year=%date:~0,4%"
set "month=%date:~5,2%"
set "day=%date:~8,2%"
set "hour_ten=%time:~0,1%"
set "hour_one=%time:~1,1%"
set "minute=%time:~3,2%"
set "second=%time:~6,2%"
if "%hour_ten%" == " " (
set zipfile=%year%%month%%day%0%hour_one%%minute%%second%.zip
) else (
set zipfile=%year%%month%%day%%hour_ten%%hour_one%%minute%%second%.zip
) ::使用Bandizip命令进行压缩,在成功后弹窗提示操作完成,并打开备份目录
Bandizip.exe c %zip_path%\%zipfile% %back_path%
mshta vbscript:msgbox("备份并压缩成功,快去看看吧!",64,"提示")(window.close)
start %zip_path%
pause
exit
注意:如果弹出提示为乱码,则需要将文件另存为ANSI格式
Svn备份与Bandizip压缩批处理程序的更多相关文章
- winform程序,备份数据库+并压缩+并删除以前的备份
说明:为了定时备份服务器上的数据库并压缩到指定目录,方便下载到本地而写本程序.配合windows的任务计划,可以达到定时备份数据库的目的. 程序需引用SQLDMO.DLL,如电脑上已安装sqlserv ...
- 用bat批处理程序通过DOS命令行删除所有的空文件夹
用过gothub或者码云的同学都知道,不包含任何文件的空文件夹上传提交时不被允许的.当然你可以在空文件下创建.keep文件(或.gitkeep文件),然后就可以上传了. 但是如果空文件夹比较多,并且我 ...
- svn备份脚 本
一直用这套脚本备份,脚本主体虽不是原创,但是从网上得到后因为不能运行也进行了些修改,前两天看到有人问关于SVN备份的问题,今天又把脚本整理了一下,解决了不能循环备份多个配置库的问题.希望对大家有所帮助 ...
- SVN备份批处理文件
SVN备份批处理文件,亲测可用 另外,备份文件时获取文件名%%~ni 可改为%%~nxi,以避免文件名中有“.”号时,读取不完成,将.后面的当作后缀名 需要使用hotcopy 时,可以将关键代码进行相 ...
- SVN备份教程(三)
上次的博文SVN备份教程(二)中,我们讲解了一下SVN定时备份的相关内容,同时我们又提出了一种新的SVN备份方案--自动备份. 1.简介 所谓自动备份,它实现的思路非常简单,就是利用SVN自带的hoo ...
- SVN备份教程(二)
上次的博文中SVN备份教程(一)我们简单介绍了一下SVN备份是如何操作的,今天我们接着将上次的问题进行优化. 1.问题回顾 在讲之前,我们先来将上次的问题重申一下.之前的SVN备份存在的问题很简单,每 ...
- SVN备份教程(一)
最近一段时间在项目中用到了SVN备份的相关内容,这里给大家做一个简单的教程,重点在于SVN备份环境的搭建过程中,大家学到的解决问题的思维方式. 1.分类 SVN备份主要分为两种:一种是远程备份,另一种 ...
- 定时任务备份数据库与windows批处理
前言: 关于数据库备份的方法有很多,你可以在命令行执行mysqldump命令进行备份,也可以使用数据库管理工具,比如navicat进行数据库的备份. 但是以上数据库的备份都是可以单次备份,总不能要一个 ...
- Windows下SVN备份脚本
本站备份:svn备份与还原_脚本_(dump命令) 以下是转载记录, 转自:https://wuxiaobai.win/archives/111 用法 svnadmin dump REPOS_PATH ...
随机推荐
- 采药 水题 dp 01背包问题 luogu1048
最基本的01背包,不需要太多解释,刚学dp的同学可以参见dd大牛的背包九讲,直接度娘“背包九讲”即可搜到 #include <cstdio> #include <cstring> ...
- 对jvm进行gc的时间、数量、jvm停顿时间的监控
在jdk中一个类可以获得gc的信息: public static void main(String[] args) { List<GarbageCollectorMXBean> garba ...
- E-UTRA channel bandwidths per operating band (36.101)
E-UTRA channel bandwidths per operating band (36.101) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/ ...
- BZOJ1468: Tree & BZOJ3365: [Usaco2004 Feb]Distance Statistics 路程统计
[传送门:BZOJ1468&BZOJ3365] 简要题意: 给出一棵n个点的树,和每条边的边权,求出有多少个点对的距离<=k 题解: 点分治模板题 点分治的主要步骤: 1.首先选取一个点 ...
- jqueryValidator自定义校验规则的一种方式(不覆盖源码)
1.封装自定义验证方法-validate-methods.js /***************************************************************** j ...
- BZOJ 1174: [Balkan2007]Toponyms
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 735 Solved: 102[Submit][Status][Discuss] Descriptio ...
- 增强for循环的使用详解及代码
首先说一下他的语法结构: for(数据类型 变量 :集合){ //这里写要遍历的元素,或者所需要的代码即可//如果集合中存放的是对象,可以获取到每个对象(数据类型=对象类型 变量(遍历出来的每个对象) ...
- asp.net网页播放MP4 出错
通过IIS进行添加:单击[开始]→[程序]→[管理工具]→[IIS管 理器],逐步展开“本地计算机”.“网站”,在你的网站上右击,选择[属性],单击“HTTP头”选项卡→单击“MIME类型”按钮,再单 ...
- Monad的基本运算
A monad is created by defining a type constructor M and two operations, bind and return (where retur ...
- 运行npm start vue.js项目 出现 npm ERR! missing script: start 错误
npm ERR! missing script: start 错误 有可能缺少依赖包,运行nmp install安装依赖(一般都依赖很多包,过程有点慢),安装完后发现多一个 node_modules文 ...