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

在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
View Code

 

你可能感兴趣的:(批量自动更新SVN版本库 - Windows)