最近項目要用到定期批量將文件及文件夾下的文檔打包,所以想到要寫腳本來實現,然後做Windows定期任務調用。bat腳本(批處理程序)調用WinRAR及7zip壓縮和解壓縮。
調用WinRAR來實現
因爲WinRAR是Windows系統經典的壓縮及解壓縮程序,也是目前爲止使用非常普遍。它不是Windows系統自帶的,所以要調用它之前得確認是否安裝了WinRAR,如果沒有安裝則自行下載安裝即可。WinRAR下載地址:http://www.winrar.com.cn/
一般來說,64位安裝在C:\Program Files\目錄下,32位安裝在C:\Program Files (x86)\目錄下。這個知識點很關鍵,下面要用到。
bat調用WinRAR解壓實例一:
::解壓程序WinRAR.exe所在目錄 32位%ProgramFiles(x86)% 或64位 %ProgramFiles% set WinRarDir=%ProgramFiles%\WinRAR :: x即解壓。-y是說如果遇到提示說是否覆蓋,選擇yes start /wait "" "%WinRarDir%\WinRAR.exe" x -l D:\Software\Redis-x64-3.2.100.zip C:\mySoftWare\
上面實例是調用解壓的核心命令,使用到項目中還需要結合上下文完善,比如判斷winrar程序是否存在,目標壓縮包zip是否存在等。
bat調用WinRAR解壓實例二:
@echo off setlocal enabledelayedexpansion echo please make sure you are admin! echo 解壓並部署redis,notepad及相關軟件,請確保相關壓縮包在當前目錄。 echo 執行此腳本前,請確認已經安裝解壓縮程序WinRAR.exe :::::::::: 配置參數 :::::::::: ::解壓程序WinRAR.exe所在目錄 32位%ProgramFiles(x86)% 或64位 %ProgramFiles% set WinRarDir=%ProgramFiles%\WinRAR REM 基礎文件 set redis=Redis-x64-3.2.100.zip set notepad=npp.7.5.6.Installer.exe REM 部署盤符 set Pan=C:\ :::::::::: 執行腳本前,請配置以上參數。:::::::::: echo ------------------------------ set curdir=%~dp0 cd /d %curdir% echo 開始準備部署資源: ::檢查基礎文件 if exist %curdir%%redis% (echo 存在:%redis%) else (echo %redis%文件不存在 & pause&exit) if exist %curdir%%notepad% (echo 存在:%notepad%) else (echo %notepad%文件不存在 & pause&exit) echo ------------------------------ ::創建部署目錄 set deploydir=%Pan%mySoftWare if exist %Pan% ( ^ if exist %deploydir% (echo 存在:%deploydir%) else (mkdir %deploydir% & echo 已創建:%deploydir%) ) else ( ^ echo !! echo !!執行失敗,當前系統不存在%Pan%盤 echo !! pause&exit ) echo ------------------------------ ::解壓並放到部署目錄 32位%ProgramFiles(x86)% 或64位 %ProgramFiles% if exist "%WinRarDir%\WinRAR.exe" (echo 已找到:"%WinRarDir%\WinRAR.exe") else (echo 找不到:"%WinRarDir%\WinRAR.exe"請檢查。 & pause&exit) echo 開始解壓部署資源: ::替換掉.zip即移除後綴名形成解壓到文件夾名 set "redisdir=%redis:.zip=%" :: x即解壓。-y是說如果遇到提示說是否覆蓋,選擇yes start /wait "" "%WinRarDir%\WinRAR.exe" x -l %curdir%%redis% %deploydir%\%redisdir%\ copy "%curdir%script\Redis*" "%deploydir%\%redisdir%\" echo 部署資源已準備好,開始安裝輔助軟件: ::運行npp.7.5.6.Installer.exe(安裝notepad++) start /wait "" "%curdir%%notepad%" /S echo 已安裝%notepad% echo 部署資源已準備好,你可以開始部署了(請注意修改redis,preview等相關應用配置文件)。 echo ------------------------------ echo 檢查服務是否存在: ::檢查服務是否存在 set redisServerName=Redis sc query "%redisServerName%" >nul && (echo 服務已存在:%redisServerName%) || (echo 請安裝部署:%redisServerName%) echo 檢查服務已完成。 echo ------------------------------ echo 部署資源已準備好,請開始部署吧。 ::部署完成,打開windows服務管理器 start "" "services.msc" -refresh pause
調用7zip來實現
7zip也是目前爲止使用非常普遍的一種壓縮程序,它的壓縮、解壓縮效率高,而且沒有廣告,是免費工具。它不是Windows系統自帶的,所以要調用它之前得確認是否安裝了7zip,如果沒有安裝則自行下載安裝即可。7zip下載地址:https://sparanoid.com/lab/7z/
bat調用7zip解壓實例一:
@echo off setlocal enabledelayedexpansion echo please make sure you are admin! echo 執行此腳本前,請確認已經安裝解壓縮程序7-Zip :::::::::: 配置參數 :::::::::: ::解壓程序WinRAR.exe所在目錄 32位%ProgramFiles(x86)% 或64位 %ProgramFiles% set 7ZipDir=%ProgramFiles%\7-Zip REM 當前目錄下用來測試的壓縮包 set plegodemo=plegodemo.zip :: 解壓 set curdir=%~dp0 set deploydir=E:\mytest set "plegodemodir=!plegodemo:.zip=!" :: C:\01_MyApp\7-Zip\7z.exe x newPack.zip -oc:\Doc -aoa start /wait "" "!7ZipDir!\7z.exe" x !curdir!!plegodemo! -o!deploydir!\!plegodemodir!\ -aoa :: 壓縮 set "name=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%" :: C:\01_MyApp\7-Zip\7z.exe a -t7z newPack.7z "F:\14_newWork\7z\testDoc\*" -r -mx=9 -m0=LZMA2 -ms=10m -mf=on -mhc=on -mmt=on start /wait "" "!7ZipDir!\7z.exe" a -tzip !deploydir!\!plegodemodir!_%name%.zip "C:\inetpub\*" -r -mx=9
【完】