Как сохранить вывод команды svn log в переменную и найти конкретную строку? - PullRequest
0 голосов
/ 17 июня 2019

Мне нужно извлечь versionNo строку из последнего зафиксированного svn журнала, используя пакетную команду.

Я использую следующие команды,

cd C:\Program Files\TortoiseSVN\bin\
svn --username user --password pass log -r COMMITTED "SVN_PATH"

и возвращается,

------------------------------------------------------------------------
r304 | user | 2019-06-10 17:53:23 +0530 (Mon, 10 Jun 2019) | 2 lines

versionNo - 1.2.3.4 committed for Mantis Id - 0000742
------------------------------------------------------------------------

Я не могу сохранить результат этой команды в переменной и извлечь эту строку (1.2.3.4).

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Для захвата вывода команды используйте цикл for /F .

Я думаю, что самый простой способ был бы таким:

cd /D "C:\Program Files\TortoiseSVN\bin"

for /F "tokens=2 delims=- " %%L in ('
    svn --username user --password pass log -r COMMITTED "SVN_PATH"
') do @set "VERSION=%%L"

echo/%VERSION%

Поскольку - и SPACE определены как разделители токенов, строки дефис-только-разделители-только автоматически игнорируются и никакой специальной фильтрации (с использованием find или findstr) не требуется.

1 голос
/ 17 июня 2019

Я бы сделал это, например,

setlocal

cd C:\Program Files\TortoiseSVN\bin\

for /f "tokens=3" %%G IN ('svn --username user --password pass log -r COMMITTED "SVN_PATH" ^| find "VersionNo"') do set "v=%%G"

echo %v%

endlocal
...