近段時間經(jīng)常要做的一件事情就是要將git上面最新的程序更新到本地后,打包壓縮然后上傳至服務(wù)器,再更新服務(wù)器上面的代碼,前段時間我在服務(wù)器上面寫了一個簡單的更新shell,感覺效果不錯,提高了更新效率,而且避免了出錯,所以我在想,本地打包壓縮操作一樣可以做一個腳本去處理,這樣就不需要做一堆復(fù)制粘貼之類的工作了,因為一般情況下打包程序的時候都不能直接完全復(fù)制,例如日志文件、緩存文件、配置文件等,由于這些文件一般只針對當(dāng)前環(huán)境,所有不能覆蓋,之前寫更新的時候shell里面會判斷一些不需要更新的文件或者文件夾清除掉后再覆蓋道理是一樣的,所以查了一些bat的相關(guān)語法,寫出了一個簡單的處理腳本。
[vb] view plain copy
@echo off
::設(shè)置_ROOT路徑,要打包的文件夾及臨時復(fù)制過渡的文件夾路徑
::設(shè)置壓縮軟件的exe路徑
::建議此腳本與需要打包的項目在同一目錄
set _ROOT=D:\xampp\htdocs\
set _FROM=%_ROOT%web
set _TO=%_ROOT%web_source
set _ZIP=E:\software\Haozip\HaoZip.exe
set _EXCFILE=%_ROOT%exclude_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.txt
set _EXCFILE=%EXCFILE: =%
if not exist %_FROM% GOTO Nosource ELSE GOTO CreateExcude
::生成exclude文件,里面包含不被復(fù)制的文件或者文件夾路徑
::注目錄需要寫\結(jié)尾,不然會當(dāng)作是文件或者目錄的開頭字符串來匹配
:CreateExcude
if exist %_EXCFILE% ( del %_EXCFILE% )
echo %_FROM%\favicon.ico >> %_EXCFILE%
echo %_FROM%\data\cache\ >> %_EXCFILE%
echo %_FROM%\data\config\ >> %_EXCFILE%
echo %_FROM%\data\log\ >> %_EXCFILE%
echo %_FROM%\data\upload\ >> %_EXCFILE%
echo %_FROM%\wap\config_ >> %_EXCFILE%
echo %_FROM%\readme.txt >> %_EXCFILE%
GOTO Tocopy
::復(fù)制并且壓縮操作
:Tocopy
if exist %_TO% ( rd %_TO% /s )
if exist %_TO%.zip ( del %_TO%.zip )
md %_TO%
xcopy %_FROM% %_TO% /s /EXCLUDE:%_EXCFILE%
del %_EXCFILE%
echo 壓縮復(fù)制副本文件夾
%_ZIP% %_TO%
echo 刪除復(fù)制副本文件夾
rd %_TO% /s /q
GOTO END
:Nosource
echo 要復(fù)制的數(shù)據(jù)源不存在
GOTO END
:END
echo complete!
pause
保存上面的代碼到web.bat,有了這個腳本,我只需要想打包的時候點擊一下就會自動處理好了一個web_source.zip了,這樣子又可以節(jié)省不少時間還避免出錯。