SVN批量移动文件,并保留版本日志
Posted 詩和遠方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN批量移动文件,并保留版本日志相关的知识,希望对你有一定的参考价值。
场景
希望将SVN文件移动到其它文件夹下,且保存SVN日志。如果是少数几个文件还好 ,对每个文件分别用SVN的rename功能(或选中多个右键拖拽,详见此链接)即可:
但若文件非常多,且具有某类特殊属性,比如某文件夹下的,文件名都包含某关键词的文件
就比较棘手,这个时候就体现出了命令行的优势,SVN可以用GUI方式操作的功能,都可以找到对应的命令。
SVN命令行
经查阅文档,SVN Rename命令的语法如下:
svn rename CURR_PATH NEW_PATH
下面看如何对某文件夹下的文件批量生成cmd命令并运行
PowerShell动态生成CMD命令并调动
# SVN文件,移动到新建的文件夹下,并保存日志信息
# 需求:KS-Code根目录下,文件名中不包含“脚本”的sql文件,转移到新的文件夹“增加字段”中
# 说明:新文件夹已经进入SVN版本管理体系
# 文件目录
$path = 'D:\\KS\\2019-BP\\KS-Code'
# 获取文件名
$dir = invoke-expression "dir $path *.sql"
foreach($_ in $dir)
if($_.Name -notmatch "脚本")
# 路径,考虑空格异常,故前后加引号
$oldpath = '"' + $path + '\\' + $_.Name + '"'
$newpath = '"' + $path + '\\增加字段\\' + $_.Name + '"'
# svn重命名命令: svn rename CURR_PATH NEW_PATH
$cmd = "svn rename $oldpath $newpath"
# 调用命令
invoke-expression $cmd
说明
以上PowerShell脚本相关功能点说明:
- invoke-expression将字符串当作脚本执行,即执行动态powershell脚本
- 双引号字符串,出现变量名($variable)时会自动解析
- 字符串本身含双引号的表示,上述方法是用单引号包起来(’"’),除此之外,还有两种方法:
- 和sql一样,引号内的引号数量要加倍,如"""“代表一个双引号”
- 用内容引号前加转义字符`,这样引号内的引号,就不用加倍了,"`""
以上是关于SVN批量移动文件,并保留版本日志的主要内容,如果未能解决你的问题,请参考以下文章