Пакет 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.

Что происходит и как я могу получить только номер?


person Valentin Brasso    schedule 10.01.2013    source источник


Ответы (2)


FINDSTR выводит всю совпадающую строку. Он не может извлечь только совпадающую часть строки.

Вы можете использовать FOR /F для анализа вывода и получения только числа.

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

Не 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
person Bali C    schedule 10.01.2013
comment
Вы также можете удалить . следующим образом: for /f "tokens=3 delims=. " %a in (tmpFile.txt) do echo %a - person Aacini; 10.01.2013