打包修改过的文件的批处理,更新第2版
之前写过《打包修改过的文件的批处理》,现在这个批处理脚本已经过多次修改,增加了很多功能,新脚本代码如下:
@echo off :: 网站更新文件打包程序 :: 作者: Mr.Lodar http://lodar.net/ :: 版本历史: :: :: v2.4 2011年01月11日 随机临时目录 :: 防止多个批处理同时运行时产生冲突 :: v2.3 2011年01月11日 自动配置7-Zip安装目录 :: 自动检测7-Zip的安装目录,不需要再手工配置路径 :: v2.2 2010年12月03日 增加PATH环境变量设置 :: 在系统环境变量未加入7-Zip时不用复制程序文件到当前目录 :: v2.1 2010年11月16日 增加批打包支持 - 多个目录同时拖放并分别打包 :: 增加判断有修改的文件时才打包,不再生成空压缩包 :: v2.0 2010年11月16日 新增拖放打包支持 - 将目录拖放到脚本文件上自动打包 :: (为了支持快速批打包,拖放模式只默认打包当天修改的文件) :: v1.0 2010年06月某日 初始版本,实现了文件排除及默认值设置 :: 拖放到图标上执行的时候程序启动路径为用户目录 :: 如: "C:\Documents and Settings\User" :: 这里把当前目录设置回批处理脚本所在目录 cd /d %~dp0 :: 检索7-Zip安装目录 for /f "tokens=2*" %%i in ( 'REG QUERY "HKLM\SOFTWARE\7-Zip" ^| find /i "Path"' ) do set "SevenZipPath=%%j" :: 设置7-Zzip路径 SET PATH=%PATH%;%SevenZipPath% :START :: 设置临时目录: set TEMP=temp_%random% if not @%1@==@@ ( set FROM=%~n1 ) else ( set /P FROM=源文件目录^(默认为www^): set /P TO=导出压缩包文件名^(默认为%FROM%-update-%date:~0,4%%date:~5,2%%date:~8,2%^): set /P DAY=修改时间^(m-d-y,默认为今天{%date:~5,5%-%date:~0,4%}^): ) :: 设置变量默认值 if @%FROM%@==@@ set FROM=www if @%TO%@==@@ set TO=%FROM%-update-%date:~0,4%%date:~5,2%%date:~8,2% if @%DAY%@==@@ set DAY=%date:~5,5%-%date:~0,4% :: 将要打包的文件复制到临时文件夹,将排除文件列表(excludelist.txt)中的文件排除在外 xcopy %FROM% %TEMP% /S /Y /I /D:%DAY% /EXCLUDE:excludelist.txt IF EXIST %TEMP% ( :: 使用7z命令行程序进行打包 7z a -t7z %TO%.7z .\%TEMP%\* :: 删除临时文件 rmdir /S /Q %TEMP% echo 文件已打包到 %TO%.7z ) else ( echo %~n1 中没有需要打包的文件 ) :: 重置变量,防止默认值被设置为上次使用的值 set FROM= set TO= set DAY= set TEMP= :: 如果有更多目录要打包,则继续重新打包其它目录 if not @%2@==@@ shift && goto START echo. if @%1@==@@ ( echo 打完收工! 按任意键退出... pause>nul ) else ( echo 打完收工! 一会就退出... ping 127.0.0.1 -n 3 >nul )
提示: 不要忘了 excludelist.txt 哦,参见之前的那篇文章《打包修改过的文件的批处理》。
近期评论