我有一个批处理脚本,当输入时从SVN检出任何项目。我必须扩展该功能,以便用户决定可以签出多个文件,并提供一种简单的方法。现在,我的脚本列出了来自SVN的文件,让用户选择输入任何名称,并使用非常基本的导航方法检出每个项目的主干。代码如下所示:
回声 ============================================================
这个批处理文件将自动从eclipse签出项目回声 ============================================================ % 问%
set svnroot= svn://some_dir
set svnroot_temp= %svnroot%
svn ls !svnroot_temp!
:top
set /p direct=Enter directory..press 1 at anytime to return to root directory and type checkout at anytime to checkout the project :
if /i !direct!==checkout ( cls
set loc=!svnroot_temp!
set proj=!dir!
if /i !direct!==1 (cls
set svnroot_temp=%svnroot%
svn ls !svnroot_temp!
goto :top
)
set svnroot_temp= !svnroot_temp!/!direct!
svn ls !svnroot_temp!
set dir=!direct!
goto :top
)
if exist "%javawork%/%proj%/" ( echo %NL%project already exists...
PING 1.1.1.1 -n 1 -w 3000 >NUL
echo %NL%updating the folder%NL%
svn update %javawork%/%proj%/*
goto :correct
)
set CheckOutLocation= user_preferred_location
svn checkout %loc%/trunk %CheckOutLocation%/%proj%/trunk/
echo %NL%%NL% Copying was successful! %NL%
PING 1.1.1.1 -n 1 -w 2000 >NUL
我想知道是否有一个更简单的方法,以便更多的项目可以从SVN签出。比如为svn ls列表设置编号,然后为要签出的项目选择编号。或者任何一种使检查许多项目更方便的方法。任何帮助都将不胜感激。谢谢!
通过管道将svn ls
添加到findstr /n
中,然后输入以空格分隔的项目编号序列以进行结对:
svn ls !svnroot_temp! | findstr /n .
set /p checkout=Enter space-delimited numbers of projects to checkout
set projNo=0
for /f "tokens=*" %%a in ('svn ls !svnroot_temp!') do (
set /a projNo+=1
for %%b in (!checkout!) do if %%b==!projNo! (
svn checkout %%a/trunk %CheckOutLocation%/%%a/trunk/
)
)