bat脚本 svn更新和提交(可直接使用)

脚本内容

 

@echo off
CHCP 936
title svn批量更新和提交
@echo ******************************************************
@echo svn批量更新和提交
@echo work_dirs 需要更新的目录路径,路径之间用空格隔开
@echo *****************************************************
set path_dir=E:\h5\branch\
set on_dir=%path_dir%pack_server
set work_dirs=%path_dir%rxxx_publish\server 
set curr_dir=%cd%
set log_dir=%curr_dir%\log
set log_file=%log_dir%\%date:~0,4%%date:~5,2%%date:~8,2%.txt
set curr_time=%time:~0,2%:%time:~3,2%:%time:~6,2%

svn update "%on_dir%"
echo "更新源目录-----:"%on_dir% 
echo %curr_time%  %%on_dir" 更新源目录">> %log_file%
if not exist %log_dir% (       
    md %log_dir%  
)
setlocal enabledelayedexpansion
for %%c in (%work_dirs%) do (
    echo !curr_time!  %%c" ========开始">> %log_file%
    svn update "%%c"
    rd /s /Q %%c
    md %%c
    xcopy %on_dir% %%c /e /q /y
    echo "xcopy:"%%c
    cd /d %%c
    for /f "eol=M tokens=1,2 delims= " %%i in ('svn st') do (
        if "%%i" == "?" (
            svn add "%%j"
        )else if "%%i" == "A" (
            svn add "%%j"
        )else if "%%i" == "!" (
            svn del "%%j"
        )
    )
    svn commit -m "周期脚本版本合并" "%%c" 
    set curr_time=!time:~0,2!:!time:~3,2!:!time:~6,2!
    echo !curr_time!  %%c "完成!!">> %log_file%
    echo "完成========:"%%c
)
pause

 

FOR /F 格式:  详细说明请到https://blog.csdn.net/davidhsing/article/details/1996180查看

FOR /F ["options"] %%i IN (file) DO command

FOR /F ["options"] %%i IN ("string") DO command

FOR /F ["options"] %%i IN ('command') DO command

file代表一个或多个文件

string 代表字符串

command代表命令

["options"] 可选

注解 for /f参数

1、delims=后面的字符的意识是,将文本每一行的内容以delims=后面的字符分割成若干列. 

“delims=, . / "   意思就是把111,222.333 444/555以,./和空格(不分先后)分成了5列.注意代码中/和"后面有个空格, 显示结果是 111 222 333 444 555

2、tokens=1,2 表示当前行按delims分割后的第1,2列值,定义 %%a 则第2列为%%b(*表示全部列)

3、eol=M 表示忽略带M的行

cd切换分区目录

cd /d path

关于结尾closeonend:1类型解释:

    /closeonend:0 不自动关闭对话框
    /closeonend:1 如果没发生错误则自动关闭对话框
    /closeonend:2 如果没发生错误和冲突则自动关闭对话框
    /closeonend:3如果没有错误、冲突和合并,会自动关闭
    /closeonend:4如果没有错误、冲突和合并,会自动关闭

常见svn命令行说明:

命令    描述

  1. :about    显示关于对话框。如果没有给命令也会显示。
  2. :log    打开日志对话框,/path 指定了显示日志的文件或目录,另外还有三个选项可以设置: /startrev:xxx、/endrev:xxx和/strict
  3. :checkout    打开检出对话框,/path指定了目标路径,而/url制定了检出的URL。
  4. :import    打开导入对话框,/path 指定了数据导入路径。
  5. :update    将工作副本的/path更新到HEAD,如果给定参数/rev,就会弹出一个对话框询问用户需要更新到哪个修订版本。为了防止指定修订版本号/rev:1234的对话框,需要选项/nonrecursive和/ignoreexternals。
  6. :commit    打开提交对话框,/path 指定了目标路径或需要提交的文件列表,你也可以使用参数 /logmsg 给提交窗口传递预定义的日志信息,或者你不希望将日志传递给命令行,你也可以使用 /logmsgfile:path,path 指向了保存日志信息的文件。为了预先填入bug的ID(如果你设置了集成bug追踪属性),你可以使用/bugid:"the bug id here"完成这个任务。
  7. :add    将/path的文件添加到版本控制 。
  8. :revert    恢复工作副本的本地修改,/path说明恢复哪些条目。
  9. :cleanup    清理中断和终止的操作,将工作副本的/path解锁。
  10. :resolve    将/path指定文件的冲突标示为解决,如果给定/noquestion,解决不会向用户确认操作。
  11. :repocreate    在/path创建一个版本库。
  12. :switch    打开选项对话框。/path 指定目标目录。
  13. :export    将/path的工作副本导出到另一个目录,如果/path指向另一个未版本控制目录,对话框会询问要导出到/path的URL。
  14. :merge    Opens the merge dialog. The /path specifies the target directory. For merging a revision range, the following options are available: /fromurl:URL, /revrange:string. For merging two repository trees, the following options are available: /fromurl:URL, /tourl:URL, /fromrev:xxx and /torev:xxx. These pre-fill the relevant fields in the merge dialog.
  15. :mergeall    Opens the merge all dialog. The /path specifies the target directory.
  16. :copy    Brings up the branch/tag dialog. The /path is the working copy to branch/tag from. And the /url is the target URL. You can also specify the /logmsg switch to pass a predefined log message to the branch/tag dialog. Or, if you don't want to pass the log message on the command line, use /logmsgfile:path, where path points to a file containing the log message.
  17. :settings    打开设置对话框。
  18. :remove    从版本控制里移除/path中的文件。
  19. :rename    重命名/path的文件,会在对话框中询问新文件,为了防止一个步骤中询问相似文件,传递/noquestion。
  20. :diff    Starts the external diff program specified in the TortoiseSVN settings. The /path specifies the first file. If the option /path2 is set, then the diff program is started with those two files. If /path2 is omitted, then the diff is done between the file in /path and its BASE. To explicitly set the revision numbers use /startrev:xxx and /endrev:xxx. If /blame is set and /path2 is not set, then the diff is done by first blaming the files with the given revisions.
  21. :showcompare    
  22. Depending on the URLs and revisions to compare, this either shows a unified diff (if the option unified is set), a dialog with a list of files that have changed or if the URLs point to files starts the diff viewer for those two files.
  23. The options url1, url2, revision1 and revision2 must be specified. The options pegrevision, ignoreancestry, blame and unified are optional.
  24. :conflicteditor    Starts the conflict editor specified in the TortoiseSVN settings with the correct files for the conflicted file in /path.
  25. :relocate    打开重定位对话框,/path指定了重定位的工作副本路径。
  26. :help    打开帮助文件
  27. :repostatus    打开为修改检出对话框,/path 指定了工作副本目录。
  28. :repobrowser    Starts the repository browser dialog, pointing to the URL of the working copy given in /path or /path points directly to an URL. An additional option /rev:xxx can be used to specify the revision which the repository browser should show. If the /rev:xxx is omitted, it defaults to HEAD. If /path points to an URL, the /projectpropertiespath:path/to/wc specifies the path from where to read and use the project properties.
  29. :ignore    将/path中的对象加入到忽略列表,也就是将这些文件添加到 svn:ignore 属性。
  30. :blame    
  31. 为 /path 选项指定的文件打开追溯对话框。
  32. 如果设置了 /startrev 和 /endrev 选项,不会显示询问追溯范围对话框,直接使用这些选项中的版本号。
  33. 如果设置了 /line:nnn 选项,TortoiseBlame 会显示指定行数。
  34. 也支持 /ignoreeol,/ignorespaces 和 /ignoreallspaces 选项。
  35. :cat    将/path指定的工作副本或URL的文件保存到/savepath:path,修订版本号在/revision:xxx,这样可以得到特定修订版本的文件。
  36. :createpatch    创建/path下的补丁文件。
  37. :revisiongraph    显示/path目录下的版本变化图。
  38. :lock    Locks a file or all files in a directory given in /path. The 'lock' dialog is shown so the user can enter a comment for the lock.
  39. :unlock    Unlocks a file or all files in a directory given in /path.
  40. :rebuildiconcache    Rebuilds the windows icon cache. Only use this in case the windows icons are corrupted. A side effect of this (which can't be avoided) is that the icons on the desktop get rearranged. To suppress the message box, pass /noquestion.
  41. :properties    显示 /path 给出的路径之属性对话框。
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值