抓取包含特定子字符串的特定修订号

时间:2014-03-31 22:19:47

标签: file batch-file mercurial tags revision

我是编写批处理文件的新手,并且做了很多研究但无济于事。

- 我现在有什么: 我目前正在使用Mercurial Repository。在我当前的批处理文件中,我需要指定两个不同的修订版作为参数才能使其工作。第一个参数是起始修订号,第二个参数是当前修订号。

- 我想做什么: 我想知道是否有某种方法可以遍历当前分支的修订号,并获取其标记中包含某个子字符串的数字。假设您的修订版1840标记为MyProd_1840,修订版1800标记为MyDev_1800。

-Question: 如果我在最新版本号(例如1855)中,我如何循环以前的数字并获取其字符串中包含“Dev”的修订号;因此,返回1800?“

- 我发现了什么: 到目前为止,我唯一知道的是“hg id -n”返回您当前所在版本的修订号(我假设我可以使用第二个参数)。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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 keyword(string)”将返回包含给定字符串的最新修订号(我相信它会搜索描述以及所述字符串的标记。我可能在标记上出错了)。但这对我有用。