2016-07-22 114 views
1

想要从批处理文件中的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% 

但我发现了字最后,而不是上次更改修订: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.我正在考虑将整行文本最后修改版本号10存储到VAR中然后替换文本以获取唯一编号。我希望即使其他(Windows批处理)如何得到它。 谢谢

+3

请参阅[for /f](http://ss64.com/nt/for_cmd.html)语法:'for/f“tokens = 4”%% i .... 。' – wOxxOm

+0

谢谢,很好的解决方案。 –

回答

1

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

你可以通过delims选项设置为无

for /f "delims=" %%i ... 

保持整条生产线,但你不希望整条生产线。你只需要最后一个(第四个)令牌。所以...

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