如何通过Windows批处理文件中的"查找"过滤器获取带有"svn信息"命令的"BASE"编号?



我想在Windows批处理文件中通过'svn info'命令获取'base'号码作为以下批次脚本:

svn update
for /f "tokens=2" %%i in ('svn info -rBASE^|find "Revision"') do (
 @echo %%i
 set svn_rev=%%i
)

,但我总是得到我的SVN托管项目代码的"头"数量。因此,我直接在控制台中尝试了命令:

>svn info -rBASE
Path: AliceAgent4.0b5856
URL: https://192.168.1.116:3443/svn/ProjectAliceVR/AliceOperationAgent/branches/AliceAgent4.0b5856
Relative URL: ^/AliceOperationAgent/branches/AliceAgent4.0b5856
Repository Root: https://192.168.1.116:3443/svn/ProjectAliceVR
Repository UUID: 794566ed1-6640e-7746-860d-66136dce9e99a
Revision: 5936
Node Kind: directory
Last Changed Author: yuanhui.he
Last Changed Rev: 5933
Last Changed Date: 2019-03-21 15:10:43 +0800 (周四, 21 3月 2019)

Revision5936,除了5933。然后,我尝试了svnHEAD参数,它以BASE输出相同的结果:

> svn info -rHEAD
Path: AliceAgent4.0b5856
URL: https://192.168.1.116:3443/svn/ProjectAliceVR/AliceOperationAgent/branches/AliceAgent4.0b5856
Relative URL: ^/AliceOperationAgent/branches/AliceAgent4.0b5856
Repository Root: https://192.168.1.116:3443/svn/ProjectAliceVR
Repository UUID: 794566ed1-6640e-7746-860d-66136dce9e99a
Revision: 5936
Node Kind: directory
Last Changed Author: yuanhui.he
Last Changed Rev: 5933
Last Changed Date: 2019-03-21 15:10:43 +0800 (周四, 21 3月 2019)

编辑:

我尝试过'svn info -rBASE^|find "Last Changed Rev:"',但仅在批处理脚本中有一个Changed字符串。

那么,如何在Last Changed Rev: 5933行中获得数字5933

基本上,这个问题有两个问题:

  • 如何获得COMMITTED数字以外的CC_11号。
  • 如何纠正Windows批处理文件中的find参数以找到正确的结果。

老实说,您如何确定植根于目录的最新SVN修订号?不是解决我的问题,但有些机构回答了我的问题。

我认为有人在这里找到我的问题,因为他们正面临着同样的问题。省略时间总是有价值的,所以我在这里安排了答案:

a1:将BASEHEAD更改为COMMITTED可以直接获得您想要的:

svn update
for /f "tokens=2" %%i in ('svn info -rCOMMITTED^|find "Revision"') do (
 @echo %%i
 set svn_rev=%%i
)

a2:将for循环的tokens值更改为4,然后将find参数更改为Last Changed Rev:。这可以纠正for循环的操作以找到正确的数字。我不熟悉Windows批处理脚本,我的错,@compo。

svn update
for /f "tokens=4" %%i in ('svn info -rHEAD^|find "Last Changed Rev:"') do (
 @echo %%i
 set svn_rev=%%i
)

根据我的评论,

  • 在结肠上拆分输入
  • 使用每个文本文件的模拟输入
  • 将Findstr与它的正则频率进行使用^锚点在线开始和多个搜索字符串
  • 从行的开头设置变量名称(已删除空间)和
  • 使用set/a从数字中删除后续空间
    (可能以08xx/09xx的解释为八分之一)

:: Q:Test2019322SO_55291828.cmd
@Echo off&Setlocal EnableDelayedExpansion
::svn update
Echo svn info -rBASE
for /f "tokens=1-2delims=:" %%i in ('
  type svn_info-rBASE ^|findstr "^Last.Changed.Rev ^Revision"
') do (
 Set "var=%%i"
 set /A "_!var: =!=%%j"
)
Set _
Echo:
Echo svn info -rHEAD
for /f "tokens=1-2delims=:" %%i in ('
  type svn_info-rHEAD ^|findstr "^Last.Changed.Rev ^Revision"
') do (
 Set "var=%%i"
 set /A "_!var: =!=%%j"
)
Set _

样本输出:

> SO_55291828.cmd
svn info -rBASE
_LastChangedRev=5933
_Revision=5936
svn info -rHEAD
_LastChangedRev=5933
_Revision=5936

最新更新