2014-03-31 126 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关键字(字符串)”将返回包含给定字符串的最新版本号(我相信它会同时搜索描述以及所述字符串的标签,我可能在标签上是错误的)。但这对我很有用。

相关问题