批量自动更新SVN版本库 - Windows

时间:2021-12-06 22:14:53

在Windows环境使用bat批处理来实现自动处理从SVN代码库里update各个项目代码。

@echo off
@echo ******************************************************
@echo =============== 批量自动更新SVN版本库 ===============
@echo %date% %time% 准备更新SVN版本库
@echo ****************************************************** ::代码编写思路
::获取bat当前的运行目录 %dp0
::遍历当前目录,查找包含.svn子文件夹的文件夹
::生成命令并调用执行 ::部分参数说明
::svn_home 安装TortoiseSVN的目录
::work_dir 需要更新的SVN目录路径,路径之间用空格隔开
::/closeonend:0 不自动关闭窗口
::/closeonend:1 在没有错误的情况下关闭窗口
::/closeonend:2 在没有错误和冲突的情况下关闭窗口
::/closeonend:3 在没有错误、冲突、合并情况下关闭窗口
::dir /ad-s/b 表示只取目录,并且不是系统文件夹,使用空格模式显示 :: 设置本地为延迟扩展。其实也就是:延迟变量,全称延迟环境变量扩展。
setlocal enabledelayedexpansion :: 设置svn默认安装位置以及需要调用的应用程序
set svn_home=D:\Program Files\TortoiseSVN\bin
set exe_name=TortoiseProc.exe
set work_dir=D:\project\svn :: 进入包含多个svn项目的目录
D:
cd %work_dir% @echo =============== 数据处理中 =============== :: 使用for循环从 dir 获取到字符串中获取文件夹名字
for /f "delims=" %%i in ('"dir /ad-s/b "') do (
:: 判断是否是svn文件夹
if exist "%~dp0%%i\.svn\" (
@echo 正在更新项目 %%i
:: 调用更新命令
"%svn_home%\%exe_name%" /command:update /path:%%i /notempfile /closeonend:2
) else (
@echo %%i 不存在svn信息
)
) @echo =============== 更新完成 =============== @pause