在没有进行版本管理的项目中,常常会因为忘记修改过哪些文件而把整个项目都覆盖一遍,既浪费网络带宽又浪费时间,每次覆盖都要在FTP上传好久,于是我就写了一个批处理脚本,将修改过的需要覆盖的文件打包成一个压缩包,代码如下:
@echo off :: 网站更新文件打包程序 :: 设置临时目录: set TEMP=temp set /P FROM=源文件目录^(默认为www^): if @%FROM%@==@@ set FROM=www set /P TO=导出压缩包文件名^(默认为update-%date:~0,4%%date:~5,2%%date:~8,2%^): if @%TO%@==@@ set TO=update-%date:~0,4%%date:~5,2%%date:~8,2% set /P DAY=修改时间^(m-d-y,默认为今天{%date:~5,5%-%date:~0,4%}^): if @%DAY%@==@@ set DAY=%date:~5,5%-%date:~0,4% :: 将要打包的文件复制到临时文件夹,将排除文件列表(excludelist.txt)中的文件排除在外 xcopy %FROM% %temp% /S /Y /I /D:%DAY% /EXCLUDE:excludelist.txt :: 使用7z命令行程序进行打包 7z a -t7z %TO%.7z .\%temp%\* :: 删除临时文件 rmdir /S /Q %temp% echo 文件已打包到 %TO%.7z pause>nul
该批处理使用了7-zip的命令行压缩工具来打包,将7z.exe复制到当前目录即可
excludelist.txt 中包含了需要排除的文件列表,xcopy的帮助中是这样说明的:
指定含有字符串的文件列表。每一个字符串必须在文件的单独行中。如果有任何字符串与要被复制的文件的绝对路径相符,那个文件将不会得到复制。
例如,指定如 \obj\ 或 .obj 的字符串会排除目录 obj 下面的所有文件或带有 .obj 扩展名的文件。
1 条评论。