获取SVN修订号到批处理文件变量

时间:2016-07-22 15:53:03

标签: windows batch-file svn

想要在批处理文件中从svn分支获取最后更改的修订版。

echo on
set svnUrl=%1
set releaseName=%2
set buildNumber=%3


for /f %%i in ('svn info  %svnUrl%/branches/%releaseName% -r HEAD ^| FINDSTR "^Last.Changed.Rev:"') do set revisionNumber=%%i
echo %revisionNumber%

但我得到的字是Last而不是Last Changed Rev:10

在命令控制台中

D:\svn info http://desktop-24i22vk:81/svn/Test/branches/TST-1 -r HEAD

我正在接收控制台输出:

Path: TST-1
URL: http://desktop-24i22vk:81/svn/Test/branches/TST-1
Relative URL: ^/branches/TST-1
Repository Root: http://desktop-24i22vk:81/svn/Test
Repository UUID: 57a8baac-304e-e54b-94b3-b7d049dce932
Revision: 17
Node Kind: directory
Last Changed Author: import
Last Changed Rev: 10
Last Changed Date: 2016-07-22 15:26:37 +0200 (pá, 22 čvc 2016)

我想获得最后更改的修订号,这里是10.我想将整行文本Last Changed Rev:10存储到变量,然后替换文本以获取唯一编号。我会很感激甚至其他(Windows批处理)方法如何获得它。 感谢

2 个答案:

答案 0 :(得分:2)

FOR / F的默认行为是将每一行拆分为标记,由空格和/或制表符分隔,并仅返回每行的第一个标记。这就解释了为什么你只得到“最后”。

您可以通过将delims选项设置为空来

来保留整行
for /f "delims=" %%i ...

但你不想要整条线。你只想要最后一个(第4个)令牌。所以...

for /f "tokens=4" %%i ...

答案 1 :(得分:0)

可以使用 svn info -r HEAD --show-item revision 仅获得Head rev作为输出...