使用批次档 (Batch file) 命令自动更新 TortoiseSVN 目录

TortoiseSVN 是一个免费的版本控管工具,我以前在专案开发团队时,我们都是使用这个版控工具在管理我们的专案原始码,这个工具非常好用,到现在我个人开发的专案,也都会将原始码上传到 VisualSVN Server 上做版本控管。
今天有一个需求是要将 Server 上的原始码做每日自动更新,原本是需要手动执行「SVN Update」的动作才行,现在要改成使用 Bat 批次档执行。

以下步骤将会教学如何编写 Bat 指令

Bat 批次档介绍

Bat 批次档(英语:Batch file),又称批次处理文件,副档名为 .bat。
在DOS、Windows 视窗中可以执行命令指令的语言,命令列采直译式执行,它类似於类 Unix 系统下的 Shell script。
批次档适合使用的环境在每日例行性作业或是大量集合式指令,命令列指令支援逻辑运算,例如 if, for, goto, choice 等逻辑指令。可执行 Windows 系统内档案、目录异动或是执行外部程序。

建立 Bat 档案

在想要存放 Bat 档案的目录下建置一个纯文字档,将档名命名为 SvnAutoUpdate.bat (档名可自己定义,但附档名需为 bat)

BAT 呼叫 SVN 执行档

如果你有安装 TortoiseSVN 的话,预设的目录会放在 C:\Program Files\TortoiseSVN 。
而执行 SVN Update 的程序放在 bin\TortoiseProc.exe

如果你也使用预设路径的话,那批次要执行的档案就在
C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe

使用纯文字工具打开 SvnAutoUpdate.bat 後,输入指令

CD C:\Program Files\TortoiseSVN\bin\
START TortoiseProc.exe

此指令可以开启 SVN Update 的执行程序

但这样还不够,接着要传入参数,让程序自动更新目录。

取得要更新的 SVN 目录

我 SVN 存放的目录在 C:\Project\Cardata,你们依各自的目录修改路径。
接下来把刚刚的 BAT 档内容指令改为

CD C:\Program Files\TortoiseSVN\bin\
START TortoiseProc.exe /command:update /path:"C:\Project\Cardata\"

执行 BAT 档後的结果

BAT 可以正确呼叫 SVN Update 程序且更新目录为最新状态了。
但出现另一个问题,更新後视窗没有关闭。
如果视窗没有关闭,连续执行就会这样子,一堆的更新结果画面。

接着只要解决执行更新後,自动关闭视窗即可。

BAT 指令最後修改

把刚刚的指令再改一下

CD C:\Program Files\TortoiseSVN\bin\
START TortoiseProc.exe /command:update /path:"C:\Project\Cardata\" /closeonend:2

加入参数 /closeonend:2 ,告知 SVN Update 在更新後自动关闭视窗。
这样子就完成了,执行批次後更新完会自动关闭视窗。

工作排程器加入此 BAT 档

接下来就是打开「工作排程器」,建立一个每日执行的排程来执行此 BAT 档。
触发程序可以依照自己想要的时间

动作就是选「启动程序」然後指向刚刚的 .bat 档案。

这样就完成了喔。

重点整理

  1. 将每天必做的工作交由批次档执行
  2. 使用批次指令执行 SVN 执行档
    3.SVN 执行档传入参数即可执行动作
    4.工作排程器加入此 BAT 档

相关学习文章

如何在 Windows Server 安装 SVN Server 版本控管软件


<<:  转行如何学Python ?

>>:  Python cv2框示人脸 【基本】

Day 02 - Variables 与 Constants

Variables(变量) 在 Objective-C 中的变量定义(Definition) 定义 ...

学习Python纪录Day8 - if回圈、建立函数的方法

if 用法 if 条件句: 程序码区块 if/else if 条件句: 程序码区块 if/elif/...

React+TypeScript 的 VSCode环境设定 & 资源整理

写前端最麻烦的地方就是有一堆分散的套件跟工具 世上只有後端好 特地写一篇文章把设定给记录下来 不然常...

Day1 Open-Match 简介

在众多游戏类型中,对战游戏类型游戏占有很重要的一席之地。不论是手机游戏市场,还是以电脑为主的竞技游戏...

Day 14 淘家集运流程设计分享 (今天休一天,分享最近接的案)

因为最近案子有点忙不完,所以决定今天休一天印度气象局,分享一下最近接的案「淘家集运」。 可能不能到太...