近段時(shí)間經(jīng)常要做的一件事情就是要將git上面最新的程序更新到本地后,打包壓縮然后上傳至服務(wù)器,再更新服務(wù)器上面的代碼,前段時(shí)間我在服務(wù)器上面寫了一個(gè)簡(jiǎn)單的更新shell,感覺(jué)效果不錯(cuò),提高了更新效率,而且避免了出錯(cuò),所以我在想,本地打包壓縮操作一樣可以做一個(gè)腳本去處理,這樣就不需要做一堆復(fù)制粘貼之類的工作了,因?yàn)橐话闱闆r下打包程序的時(shí)候都不能直接完全復(fù)制,例如日志文件、緩存文件、配置文件等,由于這些文件一般只針對(duì)當(dāng)前環(huán)境,所有不能覆蓋,之前寫更新的時(shí)候shell里面會(huì)判斷一些不需要更新的文件或者文件夾清除掉后再覆蓋道理是一樣的,所以查了一些bat的相關(guān)語(yǔ)法,寫出了一個(gè)簡(jiǎn)單的處理腳本。
[vb] view plain copy
@echo off
::設(shè)置_ROOT路徑,要打包的文件夾及臨時(shí)復(fù)制過(guò)渡的文件夾路徑
::設(shè)置壓縮軟件的exe路徑
::建議此腳本與需要打包的項(xiàng)目在同一目錄
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é)尾,不然會(huì)當(dāng)作是文件或者目錄的開頭字符串來(lái)匹配
: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,有了這個(gè)腳本,我只需要想打包的時(shí)候點(diǎn)擊一下就會(huì)自動(dòng)處理好了一個(gè)web_source.zip了,這樣子又可以節(jié)省不少時(shí)間還避免出錯(cuò)。