使用WINDOW批处理更新本地所有SVN目录

前言

公司使用SVN作为版本管理工具,所以本地磁盘上不可避免地存在了N个项目目录。每天写代码前update这些目录实在太麻烦了,于是试图让一切自动化起来。

思路

  1. 只要是svn项目路径,其根节点下肯定有一个名为.svn的隐藏文件夹,其中就保存着相关数据。
  2. 在根节点下,即与.svn同级的目录下,即可执行svn相关命令进行操作。
  3. 遍历所有.svn目录并进入同级目录,执行相应命令,即可满足自动对机子上所有SVN文件夹做操作的需求了。

实现

  1. 确定查找范围
    幸运的是,我的所有SVN目录都归类在同一个大文件夹中。以此文件夹作为起始点即可。

  2. 如何定位.svn目录
    定位目录,首先想到经典的dir命令,阅读命令说明,发现有这样几个参数会派上用场。

    • 显示隐藏目录/adh/a为显示指定属性文件,d代表目录,h代表隐藏。
    • 显示当前目录和子目录所有文件/文件夹/s
    • 不显示信息和摘要/b
    • 分类按字母顺序列出/on/o为分类列出,/n为按字母顺序。

    因此,使用dir /adh/s/b/on .svn即可找到当前目录内所有.svn目录。

  3. 对获取到的.svn路径进行操作。

    • 循环并对文本进行操作for /f
    • 切分字符串for /f "delims="
    • 循环打印路径for /f "delims=" %%i in ('dir /adh/b/s/on .svn') do echo %%i

    如此,就可以把上一步获取到的.svn目录路径全部保存在变量中并打印出来。

  4. 进入.svn目录中for /f "delims=" %%i in ('dir /adh/b/s/on .svn') do echo %%i&&cd %%i。使用cd进入变量中的目录,用&&与上一步做拼接,即上一语句执行完毕后再执行本语句。

  5. 返回上一级目录。因现在我们处于.svn目录内,需要返回上一级即.svn同级目录才可做SVN相应命令操作。for /f "delims=" %%i in ('dir /adh/b/s/on .svn') do echo %%i&&cd %%i&&cd ../,在上一步的结果后拼接上cd ../即可满足。

  6. 执行SVN相关命令,在上一步结果后继续拼接上svn updatefor /f "delims=" %%i in ('dir /adh/b/s/on .svn') do echo %%i&&cd %%i&&cd ../&&svn up

  7. 完成实现,最终步骤是:找到.svn隐藏目录 -> 打印路径 -> 进入其中 -> 返回上一级目录 -> 执行svn update

完整批处理脚本

@echo off
#首先进入到所有SVN目录所处的顶层路径
D:&&cd D:\TOP_SVN_DIR
#开始执行查找 -> 遍历 -> 更新
for /f "delims=" %%i in ('dir /adh/b/s/on .svn') do echo %%i&&cd %%i&&cd ../&&svn up
pause

总结

磨刀不误砍柴工

参考资料

[系列教程]批处理for语句从入门到精通

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值