2016-07-22 115 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 ...