批量findstr找到一个数字

时间:2013-01-10 10:41:01

标签: batch-file findstr

我正在尝试从svn update命令输出中获取修订号。在文件tmpFile.txt中,我有字符串At revision 58998.

我运行以下命令:

findstr /r "\<[0-9][0-9]*\>" "tmpFile.txt"

我已经

At revision 58998.

另外,使用

运行
findstr /r /o "\<[0-9][0-9]*\>" "tmpFile.txt"

我得到了

0:At revision 58998.

发生了什么,我怎么才能得到这个号码?

2 个答案:

答案 0 :(得分:3)

FINDSTR打印出匹配的整行。它无法仅提取线的匹配部分。

您可以使用FOR / F解析输出并获取数字。

for /f "tokens=3 delims=. " %%A in (
  'findstr /rc:"At revision [0-9][0-9]*\." "tmpFile.txt"'
) do echo %%A

答案 1 :(得分:1)

不是findstr解决方案,但它有效:)

setlocal enabledelayedexpansion
for /f "tokens=3" %%a in (tmpFile.txt) do (
set num=%%a
set num=!num:.=!
)
echo !num!

这也会从最后删除.

如果您对.使用

感到不安
for /f "tokens=3" %%a in (tmpFile.txt) do echo %%a

或cmd行(无批次)

for /f "tokens=3" %a in (tmpFile.txt) do echo %a