1. 程式人生 > >簡單的打包資料夾bat指令碼

簡單的打包資料夾bat指令碼

近段時間經常要做的一件事情就是要將git上面最新的程式更新到本地後,打包壓縮然後上傳至伺服器,再更新伺服器上面的程式碼,前段時間我在伺服器上面寫了一個簡單的更新shell,感覺效果不錯,提高了更新效率,而且避免了出錯,所以我在想,本地打包壓縮操作一樣可以做一個指令碼去處理,這樣就不需要做一堆複製貼上之類的工作了,因為一般情況下打包程式的時候都不能直接完全複製,例如日誌檔案、快取檔案、配置檔案等,由於這些檔案一般只針對當前環境,所有不能覆蓋,之前寫更新的時候shell裡面會判斷一些不需要更新的檔案或者資料夾清除掉後再覆蓋道理是一樣的,所以查了一些bat的相關語法,寫出了一個簡單的處理指令碼。

@echo off
::設定_ROOT路徑,要打包的資料夾及臨時複製過渡的資料夾路徑
::設定壓縮軟體的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檔案,裡面包含不被複制的檔案或者資料夾路徑
::注目錄需要寫\結尾,不然會當作是檔案或者目錄的開頭字串來匹配
: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



::複製並且壓縮操作
: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 壓縮複製副本資料夾
%_ZIP% %_TO%

echo 刪除複製副本資料夾
rd %_TO% /s /q
GOTO END



:Nosource
echo 要複製的資料來源不存在
GOTO END


:END
echo complete!
pause


儲存上面的程式碼到web.bat,有了這個指令碼,我只需要想打包的時候點選一下就會自動處理好了一個web_source.zip了,這樣子又可以節省不少時間還避免出錯。