如何通过SVN命令仅获取所有文件夹及子文件夹?(Windows环境)
解决Windows环境下SVN批量获取文件夹结构的问题
我太懂这种大SVN仓库里只想要文件夹结构却被海量文件拖垮的痛苦了!结合你遇到的情况,给你几个Windows环境下可行的方案:
方案1:用SVN命令 + Windows原生findstr筛选文件夹
Windows没有grep,但自带的findstr可以实现类似的筛选功能。SVN的list命令递归列出仓库内容时,文件夹的行尾会带斜杠/,我们可以利用这一点过滤出纯文件夹路径:
svn list -R --depth infinity https://你的SVN仓库地址 | findstr /E /C:"/"
-R和--depth infinity用来递归遍历所有层级的目录findstr /E表示匹配行尾的内容,/C:"/"指定要匹配的是斜杠,这样就只会保留文件夹的路径
如果需要把这些文件夹直接在本地创建出来,可以先把路径导出到文件:
svn list -R --depth infinity https://你的SVN仓库地址 | findstr /E /C:"/" > folders.txt
然后新建一个批处理文件(比如create_folders.bat),内容如下:
@echo off setlocal enabledelayedexpansion for /f "delims=" %%i in (folders.txt) do ( mkdir "%%i" 2>nul )
双击运行这个批处理,就会自动创建所有文件夹了,2>nul是用来忽略“文件夹已存在”的错误提示,避免脚本中断。
方案2:用TortoiseSVN GUI一键导出(更省心)
如果你装了TortoiseSVN(Windows下用SVN的人基本都装这个),那操作更简单,完全不用写命令:
- 在本地你想创建文件夹结构的位置右键,选择「TortoiseSVN」→「Export」
- 在弹出的导出窗口里,输入你的SVN仓库URL,选择本地目标路径
- 找到「Export type」选项,选择「Only directory structure」
- 点击确定,等着它跑完就行——这个方法只会创建文件夹,不会下载任何文件,速度快很多,也不会因为数据量太大崩溃
为啥你之前的方法不行?
- 对比空文件夹的方法需要遍历所有文件做对比,大仓库里文件数量多到离谱,自然容易超时崩溃
grep/egrep是Linux/bash下的命令,Windows cmd或者PowerShell里确实不识别,用findstr替代就好啦
内容的提问来源于stack exchange,提问作者Franck
相关产品推荐
相关产品推荐

