用一个例子来解释,我的项目结构是RootDirectory
,里面有3个分支目录DirA,DirB和DirC。
我们说目标文件夹是bin
文件夹。 bin
直接存在于dirC
中,dirB中的1级以下(DirB-> Dir BA-> bin)和DirA中的两个级别(DirA-> DirAA-> DirAAA-> ; bin)中
现在我必须在根目录中运行一个批处理脚本,该脚本应横向整个树,搜索bin文件夹并将svn ignore仅放在bin文件夹中。
使用我当前的程序,我可以横向移动,但循环也在运行bin
的子文件夹。因此,我无法在bin
停留,请进入并实施svn:ignore
。
要点:
svn ignore
,中断。bin
的下一个实例。答案 0 :(得分:0)
您可以递归调用批处理文件来实现此目的。
名为recursive.bat
的示例批处理文件可能如下所示(注意:这只是为了让您入门,您可能需要做额外的事情来处理文件名和带有空格的目录以及可能的其他异常情况...):
@ECHO OFF
SETLOCAL
IF "%1"=="" (
SET BATDIR=%~dp0
) ELSE (
SET BATDIR=%1
)
ECHO Currently in %CD%
REM Trick to get current directory name (not path)
FOR %%* IN (.) DO (
IF %%~n*==bin (
REM Currently inside a directory called bin
ECHO Setting SVN prop for %CD% and exiting recursion...
REM Insert your SVN ignore command here
GOTO :EOF
)
)
REM Loop over all subdirectories in this directory
FOR /D %%D IN ("*") DO (
ECHO Recursing into subdir "%%D"
PUSHD "%%D"
CALL "%BATDIR%\recursive.bat"
POPD
)
将其调用为recursive.bat
(无参数)。当前目录技巧是从Get current folder name by a DOS command?
顺便说一句,如果您碰巧使用TortoiseSVN,那么您可以通过配置设置指示它始终忽略bin
个目录。