我想在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)
Revision
是5936
,除了5933
。然后,我尝试了svn
的HEAD
参数,它以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:将BASE
或HEAD
更改为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:Test2019 322SO_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