// 文件:使用说明.txt
// 用途:批量上传 SVN 脚本的说明
// 适用脚本版本:2016-07-121、填写《文件提交顺序表.xlsx》,全部填写完成后按时间升序排列(如果时间形如:2016-3-2 9:2:12,要写成 2016-03-02 09:02:12,以免 excel 排序不准确。排序分列以后,就无所谓了)。升序排列后,拆分时间列,分为“日期”列和“时间”列。可先填写“原始整理表格”,然后复制到“排序整理后表格”里进行各项操作,以免出错又要重新填写一遍。
2、将在表格中得到的 6 列数据,复制到“1.txt”中。同一行的相邻两个数据之间,用 \t 作为分隔符(“\t”是不可见字符,一般默认复制过来,就是用 \t 分割的,不用处理,虽然看起来比较像空格)
3、在对应的 svn 根目录下,运行 autoAddCommit.ps1。脚本将从 1.txt 中读取数据,按 \t 作为分隔符切割每行数据,向 svn 进行提交。
4、示例文件见本文件夹。使用时注意修改脚本中的行数,即第 9 行的“127”,改成实际的条目行数
PowerShell 脚本
# 文件名:autoCommit.ps1
# 用途:为了批量上传 svn
# 读取文件内容
$line = get-content 1.txt
# 逐行解析文件
for($i = 0; $i -lt 5; $i++)
{
# 用 tab 作为分隔符
$tokens = $line[$i].split("`t")
# 判断和上一行相比时间是否变化了
if(($date -eq $tokens[0]) -and ($time -eq $tokens[1]))
{
$changeTime = 0
}
else
{
$changeTime = 1
}
# 判断和上一行相比用户是否变化了, 同时更新“用户名密码”字符串
if($username -eq $tokens[2])
{
$changeUser = 0
}
else
{
$changeUser = 1
}
# 如果用户变化了或者时间变化了
# 而且不是第一行数据,那么就提交一次
if(($changeTime -eq 1) -or ($changeUser -eq 1))
{
if($i -ne 0)
{
svn commit -m $commitMsg --username $username --password $password
}
}
# 更新本行变量
$date = $tokens[0]
$time = $tokens[1]
$username = $tokens[2]
$password = $tokens[3]
$filepath = $tokens[4]
$commitMsg = $tokens[5]
# 如果时间应该变化,则修改系统时间
if($changeTime -eq 1)
{
set-date $date
set-date $time
}
# 发出 svn add 命令
svn add $filepath
}
# 提交最后的一批数据
svn commit -m $commitMsg --username $username --password $password
文件提交顺序表:
时间 | 用户 | 密码 | 完整路径文件名 | 更新日志 |
---|---|---|---|---|
2013.01.03 12.23.43 | admin | admin | D:/test/file1.txt | 提交file1 |
2013.02.03 12.23.43 | admin | admin | D:/test/file2.txt | 提交file2 |
填写完并按时间排序后,将时间列以空格分列。拆成日期和时间两部分。