2

我正在尝试从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.

发生了什么事,我怎样才能只得到号码?

4

2 回答 2

3

FINDSTR 打印出匹配的整行。它不能只提取该行的匹配部分。

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

for /f "tokens=3 delims=. " %%A in (
  'findstr /rc:"At revision [0-9][0-9]*\." "tmpFile.txt"'
) do echo %%A
于 2013-01-10T12:24:09.967 回答
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
于 2013-01-10T10:50:22.043 回答