zoukankan      html  css  js  c++  java
  • bat脚本(批处理程序)调用WinRAR及7zip压缩和解压缩

    最近项目要用到定期批量将文件及文件夹下的文档打包,所以想到要写脚本来实现,然后做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:SoftwareRedis-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%scriptRedis*" "%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:UsersAdministratorDesktop上,所以如果要进入7z.exe所在目录,需要先后退到根目录c盘
    cd …/…/cd C:Program FilesWinRAR
    if exist “C:UsersAdministratorDesktop	est	est.tar” del “C:UsersAdministratorDesktop	est	est.tar”
    start winrar x -y C:UsersAdministratorDesktop	est.tar.gz C:UsersAdministratorDesktoptest
    rem start tar -zxvf gzip -d C:UsersAdministratorDesktop	est.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 Files7-Zip7z.exe" a -ttar F:数据压缩测试510101C.tar 1*
    @echo 将压缩后的tar格式再压缩为gzip格式,最终得到需要的tar.gz格式 
    "C:Program Files7-Zip7z.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:1_MyApp7-Zip7z.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:1_MyApp7-Zip7z.exe a -t7z newPack.7z "F:14_newWork7z	estDoc*" -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

    【完】

  • 相关阅读:
    php中strstr、strrchr、substr、stristr四个函数的区别总结
    Python
    PHP Date()函数详细参数
    mysql插入数据时,中文乱码
    mysql中类似indexOf的方法LOCATE()
    获取某个文件夹中所有txt文件
    响应式图片布局
    响应式表格布局
    css媒体类型
    html+css调用服务器端字体
  • 原文地址:https://www.cnblogs.com/xiongzaiqiren/p/12658210.html
Copyright © 2011-2022 走看看