在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

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

最新文章

  1. 设置label上文字大小、颜色不一样 NSMutableAttributedString的使用
  2. Ruff is in the house
  3. closest应用(向上查找最近的资料)
  4. 转:Elasticsearch TermQuery 详解
  5. Leetcode 26 Remove Duplicates from Sorted Array STL
  6. Linux curl使用简单介绍
  7. 【linux】xx is not in the sudoers file 解决办法
  8. SerialPort使用
  9. cocos2d-x 多线程以及线程同步
  10. 多线程编程之二 ---MFC中的多线程开发
  11. [Error]EOL while scanning string literal
  12. git第一篇---基本命令
  13. deepin(debian)下使用Git
  14. 用大O记号法测量算法的效率(Algorithm efficiency Asymptotic notation Big O notation)
  15. ionic3 点击输入 框弹出白色遮罩 并把 界面顶到上面
  16. Springboot Download file
  17. 【3dsmax2016】安装图文教程、破解注册以及切换语言方法
  18. EXP-00056: ORACLE error 12154 encountered
  19. nRF52832-PPI部分学习
  20. UI设计教程分享:banner设计

热门文章

  1. Day20:update功能的实现
  2. ATX server简介及环境搭建
  3. qt5 windeployqt.exe 部署后的程序,运行时仍然报错的问题 (无法定位程序输入点 _ZdlPvj)
  4. C# VS2019修改工程名
  5. java使用MVC编程模型实现1+到100图形界面
  6. AWS RedShift实战应用SQL大全及经验分享[持续更新]
  7. easypoi多sheet导出
  8. Mac下Virtual Box 6.1 Host-Only 网络配置 没有虚拟网卡
  9. CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
  10. 3.Linux安装docker