2014-03-31 121 views
0

我是編寫批處理文件的新手,並且做了大量的研究,但無濟於事。抓取包含特定子字符串的特定修訂號

- 我目前有什麼: 我目前正在使用Mercurial Repository。在我目前的批處理文件中,我需要指定兩個不同的修訂版作爲參數才能工作。第一個參數是起始版本號,第二個參數是當前版本號。

- 我在做什麼: 我想知道是否有某種方法可以循環訪問當前分支的修訂號並獲取包含其標記中某個子字符串的數字。假設您的版本爲1840,標籤爲MyProd_1840,版本爲1800,標籤爲MyDev_1800。

-Question: 如果我在最新版本號(比如說1855)中,我如何循環前面的數字並獲取包含「Dev」的版本號在其字符串中;因此,返回1800?「

- 我發現了什麼: 到目前爲止,我所知道的唯一的事情是」hg id -n「返回當前版本的修訂號(我假設我可以使用第二個參數)。

任何幫助,不勝感激!

+0

'hg help revsets' ??? –

+0

感謝您的提示!我能夠發現「hg id -n -r [tag]」(不帶括號)返回給定特定標籤的修訂號。這更接近我想要的批處理文件。 – user3482952

+0

也許你會描述你的**完整的商業任務**?因爲使用revsets(和輸出中的模板),您可以輕鬆執行很多技巧 –

回答

0

想通了。我的方案目前要遏制的情況下,任何人都像這樣

@echo off 
SET COMMAND=hg id -n 
SET COMMAND2=hg id -n -r "keyword(champion_prod)" 
@echo %COMMAND% 

FOR /F "tokens=*" %%A in ('%COMMAND%') DO @set endRev=%%A 

echo %endRev% 
echo %endRev% 
echo %endRev% 

@echo %COMMAND2% 

FOR /F "tokens=*" %%A in ('%COMMAND2%') DO @set startRev=%%A 

echo %startRev% 
echo %startRev% 
echo %startRev% 

endlocal 
exit /b 0 

運行到同樣的問題,「是」在COMMAND2中用於關鍵字(champion_prod),因爲當你在For中調用COMMAND2時,cmd提示符會認爲你正試圖在命令中調用一個命令並給你一個「此時意外」的錯誤。 「hg id -n -r關鍵字(字符串)」將返回包含給定字符串的最新版本號(我相信它會同時搜索描述以及所述字符串的標籤,我可能在標籤上是錯誤的)。但這對我很有用。

相關問題