最近項目要用到定期批量將文件及文件夾下的文檔打包,所以想到要寫腳本來實現,然后做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
利用WinRAR軟件解壓tar.gz文件
rem 因為test.bat文件放在C:\Users\Administrator\Desktop上,所以如果要進入7z.exe所在目錄,需要先后退到根目錄c盤 cd …/…/… cd C:\Program Files\WinRAR if exist “C:\Users\Administrator\Desktop\test\test.tar” del “C:\Users\Administrator\Desktop\test\test.tar” start winrar x -y C:\Users\Administrator\Desktop\test.tar.gz C:\Users\Administrator\Desktop\test rem start tar -zxvf gzip -d C:\Users\Administrator\Desktop\test.tar
說明:
1、del是刪除文件的,rd是刪除文件夾的,
rd只能刪除空文件夾,如果要連同內部文件一起刪要用rd /s 或者rd /s /q
2、rem為bat文件中的注釋標志,即rem后的語句為注釋內容
調用7zip來實現
7zip也是目前為止使用非常普遍的一種壓縮程序,它的壓縮、解壓縮效率高,而且沒有廣告,是免費工具。它不是Windows系統自帶的,所以要調用它之前得確認是否安裝了7zip,如果沒有安裝則自行下載安裝即可。7zip下載地址:https://sparanoid.com/lab/7z/
bat調用7zip壓縮實例:
@echo 定位到待壓縮的文件夾 cd F:\數據壓縮測試\0101C @echo 使用7z先將1這個目錄下的所有文件壓縮為tar格式 "C:\Program Files\7-Zip\7z.exe" a -ttar F:\數據壓縮測試\510101C.tar 1\* @echo 將壓縮后的tar格式再壓縮為gzip格式,最終得到需要的tar.gz格式 "C:\Program Files\7-Zip\7z.exe" a -tgzip F:\數據壓縮測試\2016_1_510101C.tar.gz F:\數據壓縮測試\510101C.tar @刪除中間過程生成的文件 del "F:\數據壓縮測試\510101C.tar"
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
用7z來解壓.tar.gz
7 zip軟件可以實現文件的壓縮和解壓縮,如果使用7z.exe對tar.gz文件進行解壓縮,需要經過兩次解壓,第一次解壓成tar文件,再解壓一次生成源文件,例如test.tar.gz解壓一次生成test.tar。再次解壓生成test
【完】