如何将svn log命令的输出保存到变量并找到特定的字符串?

时间:2019-06-17 11:43:52

标签: batch-file cmd tortoisesvn

我需要使用批处理命令从最近提交的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 个答案:

答案 0 :(得分:1)

例如,我会这样做

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

答案 1 :(得分:1)

要捕获命令的输出,请使用for /F loop

我认为最简单的方法是:

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或{{ 1}})。