@echo off
Setlocal enabledelayedexpansion
::CODER BY Administrator POWERD BY iBAT 1.6
::设置svn默认安装位置以及需要调用的应用程序
set workPath=C:\Program Files\TortoiseSVN\bin
set exeName=TortoiseProc.exe
echo Svn程序路径 C:\Program Files\TortoiseSVN\bin
::需要用户判断自己当前电脑svn的客户端是否也在这个目录下边,如果没有,使用用户录入的目录
set /p input=Svn程序路径是否正确 (Y or N):
if /i "%input%"=="Y" goto Y
if /i "%input%"=="N" goto N
:N
::用户录入正确的目录后,跳转到处理过程
set /p workPath=Svn安装目录=
goto Y
:Y
echo 数据处理中
::使用for循环从 dir 获取到字符串中获取文件夹名字
:: dir /ad-s/b 表示只取目录,并且不是系统文件夹,使用空格模式显示
for /f "delims=" %%i in ('"dir /ad-s/b "') do (
echo 正在查询文件【%%i】是否包含svn信息
::判断是否是svn文件夹
if exist "%~dp0%%i\.svn\" (
echo 正在更新项目 %%i
::调用更新命令
"%workPath%\%exeName%" /command:update /path:%%i /notempfile /closeonend:)
)
echo 更新完成
pause
先上代码,如果你不了解bat,可以先复制下来,然后再去学习。

@echo off           //这句是不在cmd显示下面的命令,加个@是不显示自身的命令

for /f %%i in (proall.txt) do (
echo 更新 %%i
TortoiseProc.exe /command:update /path:D:\work\%%i /closeonend:2
echo 完成%%i 更新
echo.
) exit12345678910 还有那个proall.txt,其实没什么,就是你要更新的项目,或者项目下的某一个文件夹 项目1
项目2
项目3
项目4\排期表
项目4\文档
项目8
1234567 接下来解释一下:
1、for /f %%i in (*) do() 这句意思是使用for循环来获取项目名,然后执行do里面的命令,for /f是用来读取文本的命令,文本的每一行表示一个元素,空行就跳过
其次%%i表示一个临时的i,表示proall.txt里面的某一个项目名称,而且是局部变量
上面的是在proall.txt里面读取要更新的项目名,如果项目多了,只要修改proall.txt就可以了,当然你不嫌麻烦也可以用“数组”,写在bat里面。 2、echo 更新%%i 只是加个提示,会提示更新项目1、更新项目2 3、 TortoiseProc.exe /command:update /path:D:\work\%%i /closeonend:2 这一句是最主要的 TortoiseProc.exe表示执行TortoiseSVN的GUI程序
update,也就是执行更新项目的命令
接下来的path表示要更新哪个项目,我放在了D:\work目录下,会通过从proall.txt里面读取的来依次更新
closeonend:2表示更新时如果没发生错误和冲突则自动关闭对话框 4、echo 完成%%i 更新 也是加个提示,完成项目1 更新等等 5、echo. 如果你眼神还可以就会发现echo后面有个.,记住是紧挨着echo,没有空格,表示换行 6、exit 表示更新完的话自动关闭cmd命令窗口,当然如果你想看下更新了什么,可以改成pause --------------------- 本文来自 S_clifftop 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/S_clifftop/article/details/81079221?utm_source=copy

# 批量更新多个Git库

:: gitpullall.bat
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS

SET MYGIT="D:\Program Files\Git\bin\git.exe"
SET MYHG="D:\Program Files\TortoiseHg\hg.exe"
FOR /D %%X IN (*) DO (
IF EXIST "%%X\.git\" (
CD /D "%%X"
ECHO ===== git pull %%X
%MYGIT% pull --recurse-submodules=yes --ff-only --all --progress
CD /D ..
) ELSE IF EXIST "%%X\.hg\" (
CD /D "%%X"
ECHO ===== hg pull %%X
%MYGIT% pull -u
CD /D ..
) ELSE ECHO ..... Skipped %%X
)

:bye
PAUSE
ENDLOCAL

# 打包一个或多个Git库

:: packdir.bat
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS SET MY7Z="D:\Program Files\7-Zip\7z.exe"
IF "%1" == "" (
FOR /D %%X IN (*) DO (
IF EXIST "%%X\.git\" (
DEL "%%X.7z" >NUL >&
ECHO ===== Packing %%X\.git\ to %%X.7z
%MY7Z% a -mx9 "%%X.7z" "%%X\.git\" 1>NUL
) ELSE ECHO ..... Skipped %%X
)
) ELSE (
DEL "%1.7z" >NUL >&
IF EXIST "%1\.git\" (
ECHO ===== Packing %\.git\ to %.7z
%MY7Z% a -mx9 "%1.7z" "%1\.git\" 1>NUL
) ELSE FOR /D %%X IN (*) DO (
IF EXIST "%%X\.git\" (
ECHO ===== Packing %%X\.git\ to %.7z
%MY7Z% a -mx9 "%1.7z" "%%X\.git\" 1>NUL
) ELSE ECHO ..... Skipped %%X
)
) :bye
PAUSE
ENDLOCAL

如果需要批量恢复所有子项目目录下的代码,运行gitcheckoutall.bat批处理文件:

:: gitcheckoutall.bat
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS SET MYGIT="D:\Program Files\Git\bin\git.exe"
FOR /D %%X IN (*) DO (
IF EXIST "%%X\.git\" (
CD /D "%%X"
ECHO ===== git checkout %%X
%MYGIT% checkout --recurse-submodules -f --
CD /D ..
) ELSE ECHO ..... Skipped %%X
) :bye
PAUSE
ENDLOCALSETLOCAL ENABLEEXTENSIONS
@echo off
Setlocal enabledelayedexpansion
SET MYGIT="C:\Program Files\SlikSvn\bin\svn.exe"
SET MYHG="D:\Program Files\TortoiseHg\hg.exe"
for /f "delims=" %%i in ('"dir /ad-s/b "') do (
echo 正在查询文件【%%i】是否包含svn信息
IF EXIST "%%i\.svn\" (
CD /D "%%i"
echo 正在更新项目 %%i
%MYGIT% up
CD /D ..
) ELSE IF EXIST "%%i\.hg\" (
CD /D "%%X"
ECHO ===== hg pull %%i
%MYGIT% pull -u
CD /D ..
) ELSE ECHO ..... 不包含 %%i
)
echo 更新完成
pause
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
https://stackoverflow.com/questions/10312521/how-to-fetch-all-git-branches

批处理 更新 svn git hg的更多相关文章

  1. 批处理更新svn

    很多软件都有命令行支持,即可以直接在Windows命令提示符下输入软件提供命令来执行,完成软件的一些功能. 比如输入svn help 可以查看svn支持的命令行 想要更新svn资源需要用到命令svn ...

  2. xcode 更新svn/Git后发现模拟器显示No Scheme问题

    这个是由于XXX..xcodeproj包中xcuserdata文件夹中user.xcuserdatad文件夹名字的问题...user.xcuserdatad文件夹的名字,不是当前用户的名字,就会显示n ...

  3. SVN批处理更新文件夹

    SVN批处理更新文件夹 "C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:update /path:&quo ...

  4. windows系统下用python更新svn和Git

    转载请标明出处:http://www.cnblogs.com/zblade/ 最近在思考怎么实现python的一键打包,利用python的跨平台特性,可以实现在windows和mac下均可执行的特点. ...

  5. svn/git的diff、patch

    svn/git的diff.patch 前几天,正当我突突的写代码,企业微信嘀嘀一声响”在不,过来帮我看个bug”.本人一向助人为乐,高兴的冲了过去,然后就开始了一段长达1分钟的问题描述.很明显,此同学 ...

  6. 自动化工作之自动更新SVN

    任务计划程序 任务计划程序是Window自带的组件 微软文档 http://windows.microsoft.com/zh-cn/windows-vista/automate-tasks-with- ...

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

    开发过程中每天都要从SVN代码库里一个一个的update各个项目代码,不仅效率实在是低,也不符合程序员的"懒"精神,由于是在Windows环境做开发,自然就想到了使用bat来实现自 ...

  8. 版本控制工具(SVN/Git)介绍

    文章大纲 一.SVN介绍二.Git介绍三.IDEA使用SVN和Git四.总结五.参考文章   一.SVN介绍 1. SVN服务器搭建和使用 首先来下载和搭建SVN服务器,下载地址如下: http:// ...

  9. VSS SVN GIT SVN 加锁签出

    VSS TFS SVN GIT VSS 两大功能: 1.签出后加锁,别人不能签出,独占签出. 2.在服务端可以查看哪些用户签出了哪些文件. 3.查看所有签出未签入的文件列表,SVN未发现此功能. 缺点 ...

随机推荐

  1. PJzhang:贷款逾期与失信被执行人

    猫宁!!! 最近看到一家网贷机构在APP上的温馨提示,提到了网贷逾期与个人征信的关系以及向客户发放贷款的7项基本原则. 如下: 贷款申请及逾期告知 尊敬的客户,感谢您选择####股份有限公司为您提供贷 ...

  2. Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses

    Bryce1010模板 http://codeforces.com/contest/1000/problem/E 题意: 给一个无向图,求图的最长直径. 思路:对无向图缩点以后,求图的最长直径 #in ...

  3. Educational Codeforces Round 20 A

    Description You are given matrix with n rows and n columns filled with zeroes. You should put k ones ...

  4. Generating Palindromes LightOJ - 1033

    Generating Palindromes LightOJ - 1033 题意:添加最少的字符使得给出的字符串成为回文串.输出添加的字符数. 方法:常规区间dp.ans[i][j]表示使得ans[i ...

  5. 2018 ACM-ICPC亚洲区域赛(青岛)

    Problem C---zoj 4060 Flippy Sequence 解题思路:要求进行两次操作,每次操作选择一个区间,问将s串变成t串中所选的两个区间构成的4元组有多少个.做法:找出s串与t串不 ...

  6. jmeter(二十)JMeter中返回Json数据的处理方法

    Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Js ...

  7. 看Facebook是如何优化React Native性能

    原文出处: facebook   译文出处:@Siva海浪高 该文章翻译自Facebook官方博客,传送门 React Native 允许我们运用 React 和 Relay 提供的声明式的编程模型, ...

  8. P1789 【Mc生存】插火把

    题目背景 初一党应该都知道...... 题目描述 话说有一天linyorson在Mc开了一个超平坦世界,他把这个世界看成一个n*n的方阵,现在他有m个火把和k个萤石,分别放在x1,y1...xm,ym ...

  9. C#中Json的简单处理

    命名空间:Windows.Data.Json在Windows Runtime中,可以使用Json类对获取的Json字符串进行操作,相比DataContractJsonSerializer类操作更加直观 ...

  10. 猩球StarBall ,一个方便约球的小程序

    扫描小程序码直接进入小程序 猩球StarBall 是一款为热爱运动的人群提供便利的小程序. 开发技术为Java +Mysql 其中用到的技术框架为SpringBoot,Mybatis,Redis,Qu ...