在Windows上,

使用 svn status -u -q %dir% 可以列出svn仓库的状态:

M             8295   build.bat
* 8306 E:\game\bzk\dev\tools\proto\src\jianghu_dun.proto
* 8306 E:\game\bzk\dev\tools\proto\src\hero.proto
M 8299 svn_ci.bat

(使用 svn status /? 可以查看 svn status的用法)

如上,我们可以获得类似的输出,其中一行第9个字符是星号*代表远程有修改的,因此我们只要查出某一行第九个字符是个星号即可,

翻来覆去查来找去,bat对字符串的操作真是难以言语,首先要在脚本中获得命令的输出,bat的方法是:

for /F "delims=" %%i in ('svn status -u -q %1') do (
# echo %%i 可以输出:M 8295 build.bat
set out=%%i
# 但是 echo %out%就不行,搞不懂
)
# 如果在这里才处理%out% %out%等于`svn status -u -q`输出的最后一行,而不是总共4行,也不行

目前可以解决的思路是在for /F "delims=" %%i in ('svn status -u -q %1') do中加入选项 "tokens=1-4 delims= "

将输出按照空格分开,分别判断前4个是否包含星号:

set svn_change=false

call :check_svn_remote %here%\src
if %svn_change% == true (
echo SVN上有更新的文件,正在重新生成
call %HERE%\build.bat
)
goto :eof # =========定义==============
:check_svn_remote
set svn_change=false
for /F "tokens=1-4 delims= " %%i in ('svn status -u -q %1') do (
if [%%i] == [*] goto :svn_change_true
if [%%j] == [*] goto :svn_change_true
if [%%k] == [*] goto :svn_change_true
if [%%l] == [*] goto :svn_change_true
)
goto :eof :svn_change_true
set svn_change=true
goto :eof

如有更好的办法,还请大家指点:)

使用bat脚本判断远程SVN文件是否有修改的更多相关文章

  1. BAT 脚本判断当前系统是 x86 还是 x64 系统

    本文告诉大家在写 BAT 脚本的时候,如何判断当前的系统是 32 位系统的还是 64 位系统 通过注册表进行判断方法 @echo OFF reg Query "HKLM\Hardware\D ...

  2. PHP如何判断远程图片文件是否存在

    <?php $url = 'http://www.nowamagic.net/images/test.jpg'; if( @fopen( $url, 'r' ) ) { echo 'File E ...

  3. 使用bat脚本调用py文件直接获取应用的包名和targetversion

    背景: 在上一篇已经介绍过如何利用python调用aapt获取包名 https://www.cnblogs.com/reseelei-despair/p/11078750.html 但是因为每次都要修 ...

  4. svn文件夹解锁批处理

    清除svn文件的bat脚本整理 从svn上检出的项目,不在myeclipse工具中脱离svn的管辖,怎么办呢,下面有我的方法,也是借鉴别人的,用了特别好使,故推荐给大家. 首先创建一个xxx.bat文 ...

  5. windows下定时利用bat脚本实现ftp上传和下载

    前言: 工作中可能会遇到以下情况,利用windows作为中转,来实现两台linux服务器的文件传输. 实现步骤: 1.FTP上传和下载的bat脚本. 脚本分为两部分:可执行bat脚本和ftp命令文件: ...

  6. 使用jQuery来检测远程图片文件是否存在

    使用jQuery来检测远程图片文件是否存在 最近为我的憨豆人笑园添加图片功能时,遇到了这个问题,用户可以填写一个远程的图片地址,也可以上传一个本地图片.为了不浪费服务器的资源,我们需要在客户端先对用户 ...

  7. 服务器A制定计划任务,BAT脚本自动备份oracle数据文件,拷贝至服务器B的共享目录。

    运行环境:windows server 2008 R2 目的:在数据库服务器A进行数据库自动备份,并且保留5天. 为了安全,需要在web应用服务器B进行数据库的冗余备份,建立双保险.(保留15天) A ...

  8. PHP判断远程文件是否存在

    <?php /* 函数:remote_file_exists 功能:判断远程文件是否存在 参数: $url_file -远程文件URL 返回:存在返回true,不存在或者其他原因返回false ...

  9. php如何判断远程文件是否存在

    <?php /*   函数:remote_file_exists   功能:判断远程文件是否存在   参数: $url_file -远程文件URL   返回:存在返回true,不存在或者其他原因 ...

  10. 通过在shell脚本中用scp或rsync实现远程同步文件

    通过在shell脚本中用expect实现远程scp文件  shell expect的简单用法 http://myunix.blog.51cto.com/191254/1095074 http://ji ...

随机推荐

  1. SQL注入之延时注入(10)

    以下提供两种方式进行延时注入 GET /sqli/Less-10/?id=1"+and+sleep(5)--+ HTTP/1.1 Host: 192.168.245.146:6101 Use ...

  2. easyui datagrid 表头与数据错位

    方法一:容易,实用的方法 在jquery.easyui.min.js中查找到field.replace(/[\.|\s]/g, "-")在其后添加replace 例子:field. ...

  3. vue使用websoket

    参考链接:https://www.cnblogs.com/qisi007/p/10213886.html export default { name: "realdetail", ...

  4. Redis容器的二种常用启动方式

    #==========redis:latest镜像的容器启动命令============# docker run -d --name redis01 -p 6379 --restart unless- ...

  5. onnxruntime源码解析之C接口简介

    一.C接口 1. 简介 其他语言的接口都是在C接口的基础上,进一步的封装. C的接口头文件为:onnxruntime_c_api.h 头文件内包含了详细的注释和说明. 总体上,除了一些数据结构的定义, ...

  6. CDO学习1 CDO简介

    参考自如下网站 http://www.ceda.ac.uk/static/media/uploads/ncas-reading-2015/cdo.pdf 介绍 一个有几百种操作符的单独命令 CDO受N ...

  7. WinForm嵌入Web网站

    1.安装CefSharp 2.GetMac()获取用户mac地址方法 3.根据错误提示新建CEFKeyBoardHander.cs form1.cs using CefSharp; using Cef ...

  8. DataTable操作汇总

    1.排序 DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("Age" ...

  9. c原因学习---指针作为函数的形参

    指针作为函数的形参, 可以改变实参的值. #include<stdio.h> // 交换两个变量的值 int swap(int x, int y) { int k = y; y = x; ...

  10. nginx调试和location用法,匹配url

    1.nginx调试输出内容到页面 location = /demo { charset utf-8; default_type text/html; return 500 "服务正在升级,请 ...