如何在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
)
)
)
谢谢
答案 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,因为该行分为两部分。