获取svn目录文件列表

背景

需要查询svn上特定日期后后修改的文件和文件夹列表。

通过bat脚本的方式。

方式一

通过svn diff 命令获取目录列表

缺点:获取的中文路径为转换字符,需要将路径字符转格式。

svn diff -r {2018-10-30} --summarize http://192.168.xx.xx:xxx/svn/xx/trunk/xx > changedfiles.txt

结果:

http://144.13**/%E6%B2%B3%E5%8C%97/%E5%BB%8A%E5%9D%8A%E4%B8%9C%E6%9D%B0%E7%89%B9%E7%BE%8E%E8%BF%9E%E9%94%81%E8%B6%85%E5%B8%82MIS%E9%A1%B9%E7%9B%AE/doc/06%20MIS%E7%BB%8F%E5%85%B8%E6%A1%88%E4%BE%8B%E6%B5%8B%E8%AF%95%E6%8A%A5%E5%91%8A%EF%BC%88%E7%B3%BB%E7%BB%9F%E7%BB%8F%E5%85%B8%E6%B5%8B%E8%AF%95%E6%A1%88%E4%BE%8B%EF%BC%89.xls

参考连接svn diff


方式二

通过svn list 命令
无法直接获取特定时间后的文件列表,需要通过excel手动转化,或者再写个脚本匹配时间

下面的脚本工作原理

1.匹配特定的文件夹,doc结尾

svn list -R %var% --verbose  |findstr  ".*/doc/$"  >>temp.txt

2.分割文件中的一行

for /f  "tokens=1-3,*" %%i in (temp.txt)

3.获取分割结果%%l中二次分割的最后一个结果last

for %%A in (%%l) do set last=%%A

4.将分割第一次分割字符串的结果和第二次分割字符串的结果拼接输出

echo %%i,%%j,%%k,%var%/!last!>>list.csv

原代码:

@echo 先删除其他文件

del  temp.txt

del  list.csv

@echo 开始生成filelist清单

set var=http://******/cyyang1

echo 路径:%var%

svn list -R %var% --verbose  |findstr  ".*/doc/$"  >>temp.txt

for /f  "tokens=1-3,*" %%i in (temp.txt) do (

setlocal enabledelayedexpansion

for %%A in (%%l) do set last=%%A

echo %%i,%%j,%%k,%var%/!last!>>list.csv

)

pause


注意:

1.setlocal enabledelayedexpansion 设置局部变量可被其他地方使用,使用方式为!变量名!

2.tokens=1-3,*  将结果分割为四份,其中%%i第一份部分,%%l为第四部分

参考连接:

https://www.cnblogs.com/princessd8251/articles/3859021.html

https://www.cnblogs.com/yajing-zh/p/4702613.html

https://www.jb51.net/article/29323.htm

你可能感兴趣的:(获取svn目录文件列表)