从Windows批处理文件中的远程存储库svn头修订 - 系统找不到指定的文件

时间:2015-09-24 07:01:35

标签: windows batch-file svn command-line

如何在Windows批处理文件中获取远程存储库的SVN修订版号?我想在用户输入空白时检查条件我必须得到HEAD修订版。

我正在使用以下代码段来获取修订号。虽然for循环返回w.r.t远程SVN服务器位置的所有必要信息,包括修订号。批处理文件仍然会抛出 系统找不到指定的文件和变量%SVN_VERSION% 仍然是空的。

在下面提到的代码中,%SVN_PATH%指向远程服务器URL

set /p "SVN_VERSION=Please specify the SVN Revision number. For HEAD revision press Enter"
    if "%SVN_VERSION%" =="" (
    for /f "delims=: tokens=1,2" %%a in ('svn info %SVN_PATH%') do (
              if "%%a"=="Revision:" (
                set /a SVN_VERSION=%%b
            )
        )
    )

谢谢

1 个答案:

答案 0 :(得分:2)

正如我在评论中提到的,您可以使用svnversion command直接获得修订。

@echo off
set /p "SVN_VERSION=Please specify the SVN Revision number. For HEAD revision press Enter"
if "%SVN_VERSION%"=="" (
    for /f %%a in ('svnversion') do set "SVN_VERSION=%%a"
)
exit /b 0

修改

Here it is well explained how to use the command svnversion

修改

根据您的评论并试图猜测,如果您知道remote_url,则以下命令应该有效

@echo off

rem Edit remote_url
set /p "remote_url=Please specify the SVN repo url http://....." || goto:EOF

set /p "SVN_VERSION=Please specify the SVN Revision number. For HEAD revision press Enter"

if "%SVN_VERSION%"=="" (
    for /f "delims=: tokens=1,2" %%a in ('svn info %remote_url%') do (
        if "%%a"=="Revision" ( set SVN_VERSION=%%b )
    )
)
exit /b 0

修改

这也应该有用,因为我已经看到了应该是什么输入

@echo off

set /p "SVN_VERSION=Please specify the SVN Revision number. For HEAD revision press Enter"

if "%SVN_VERSION%"=="" (
    for /f "tokens=1,2" %%a in ('svn info %SVN_PATH% ^|findstr /ic:"Revision"') do set SVN_VERSION=%%b
)
exit /b 0

说明:
您的错误是delims=:,因为:不是tokens比较错误的一部分。 此外,默认delims是空格,因此不需要在此处指定delim,因为该行分为两部分。