一个实用工具--深层级目录文件全提取

在公司做过大型项目开发的都有过深切体会,一般项目的层级目录都会很深。 设想以下情境:某次策划提了需求,你改好后需要测试,但是这些代码分布在不同的层级目录下,但是你又不能提交到服务器,这时候怎么给测试这些文件呢,

一种方法是手动去复制拷贝,然后打包传给别人--作为有点经验的程序员,为了尊严,必须要搞个自动化工具以代之

工具的组成部分: 配置 xxconfig.cmd ->主要用来配置你的项目主目录,需要提取的文件目录,以及压缩文件的目录;

        files.txt -> 待提取的文件相对路径,以config.cmd 配置的主目录为参考

        xxRun.bat ->执行提取任务的脚本 (一般用这个脚本就行)

        xxcopy.exe ->负责把一个目录的文件拷贝到指定目录(可以下载,但也可自己编写,功能简单,就是xxcopy 命令)

        xxSvnRun.bat ->执行svn更新命令,保证所要提取的是最新的(此处有点问题,如果修改的地方冲突了就麻烦了) (可选)

        xxlog.txt 日志文件,用来添加你修改了什么东西

下面贴上具体的脚本文件,以及我自己写的xxcopy 源码,以后方便回顾

xxconfig.cmd脚本如下:

rem 分支名称
set branch_name=XXX

rem 本地硬盘分支目录,默认:E:\XXX
set local_branch_path=E:\%branch_name%

rem 用户名,作为rar文件名的一部分
set username=jxq

rem 加入rar.exe所在路径
set path=C:\Program Files (x86)\WinRAR

rem 记录文件列表的文件名称
set fileslist=files.txt

files.txt  文件存放修改的文件相对路径

xxRun.bat 脚本如下:

 1 @echo off
 2 rem 设置变量延迟,关于变量延迟可参考我的另一篇小记 批处理之变量延迟
 3 setlocal EnableDelayedExpansion     
 4 
 5 rem 调用环境变量脚本
 6 call config.cmd
 7 
 8 rem 建立rar的文件名,格式filename_prefix + date + username + 索引
 9 set rar_title=%branch_name%_%date:~5,2%%date:~8,2%_%username%
10 :loopstart
11 set i=0
12 :loop
13 set/a i+=1
14 if !i! LSS 10 (set fn=%rar_title%_0!i!) else set fn=%rar_title%_!i!
15 if exist %cd%\%fn%.rar (goto loop) else (goto loopend)
16 :loopend
17 set rar_filename=%fn%.rar
18 
19 rem 拷贝提交列表中的文件
20 rem for /f "tokens=*" %%a in (%fileslist%) do xxcopy %local_branch_path%\%%a  %cd%\%branch_name%\%%a
21 for /f "tokens=*" %%a in (%fileslist%) do xxcopy %local_branch_path%\%%a  %cd%\%%a
22 
23 rem 生成rar
24 rem a 指打开(没有则创建)一个rar文档
25 rem -r 针对所有子目录
26 rem -ed 不添加空目录
27 rem -x 排除文件或文件夹,支持通配符,如文件 -x*.obj  目录如: -x*\mydir\*
28 rem rar a -r -ed -xrun.bat -x%fileslist% -xreadme.txt -xxxcopy.exe -x*.cmd -x*.rar %rar_filename%
29 rar a -r -ed -xrun.bat -xSvnRun.bat -xreadme.txt -xxxcopy.exe -x*.cmd -x*.rar %rar_filename%
30 
31 if exist %cd%\Base rd /s/q %cd%\Base
32 if exist %cd%\Bin rd /s/q %cd%\Bin
33 if exist %cd%\Client rd /s/q %cd%\Client
34 if exist %cd%\Cluster rd /s/q %cd%\Cluster
35 if exist %cd%\Common rd /s/q %cd%\Common
36 if exist %cd%\Manager rd /s/q %cd%\Manager
37 if exist %cd%\RenderEngine rd /s/q %cd%\RenderEngine
38 if exist %cd%\Server rd /s/q %cd%\Server
39 if exist %cd%\Social rd /s/q %cd%\Social
40 if exist %cd%\test rd /s/q %cd%\test
41 if exist %cd%\Tools rd /s/q %cd%\Tools
42 if exist %cd%\UI rd /s/q %cd%\UI
43 if exist %cd%\Voice rd /s/q %cd%\Voice
44 
45 
46 pause

xxSvnRun.bat

这个脚本和上面的run.bat 几乎一样只不过在for循环中多加了一行 svn更新,然后再拷贝,此处不再赘述

for /f "tokens=*" %%a in (%fileslist%) do (
svn update %local_branch_path%\%%a %cd%\%%a
xxcopy %local_branch_path%\%%a %cd%\%%a

xxcopy.exe 代码很简单,可以使用任意语言生成可执行文件,后面有时间再贴上,你也可到网上下载现成的程序

 

关于工具的使用注意事项:要把整个工具文件夹放到你要操作的项目文件夹同级目录,否则提取失败

注:本文是我在博客园写的一篇文章,地址 https://i.cnblogs.com/EditPosts.aspx?postid=10145570,现移到CSDN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值