[批处理]简易命令行RAR

这个BAT是为了病毒满满的信管实验室而专门定制的,在这机房上了两年,跟病毒也玩了两年了,也都脸熟的不行不行的了,来来回回就那几个病毒不是autorun.inf就是Desktop__.ini要么就是game.exe啊.VBS神马的

这个机房的电脑一旦中毒RAR就无法使用,压缩解压都无法使用

但是无意间发现命令行版的RAR不受影响,依然可以坚挺可以使用,便用BAT做了一个使用命令行版RAR

¤特色1:在压缩时会从所有目录中自动屏蔽机房流氓病毒文件Desktop__.ini,这个文件很流氓,只要一插U盘

U盘里面所有的文件夹都会出现这个文件,每次回来都要删,后来麻烦的也不想管了

但是这个BAT在压缩文件的时候会自动屏蔽此文件,不把它压缩到包里面

 ¤特色2:在压缩时会加入5%的恢复记录,以防RP后可恢复损坏的RAR中的内容

机房的网络很渣B,经常在我这里运行好好的文件用飞秋发给别人就用不了了,中间传输损坏了

RAR也是,所以给RAR加上5%的恢复记录很有必要,防止打开不了还可以进行修复
                  ==注意==                                 
※在我制作测试的RAR 3.90版本中的命令行版RAR无法解压ZIP,7Z等其他格式的压缩包文件

这个问题很是怪异,用图形界面的WinRar就可以,用命令行版的RAR就不行,难道用的还不是一个内核????

所以在设计时如果拖放进ZIP,7Z等文件会被识别为“其他文件”而进行压缩 处理

而不会去解压,因为也解压不了,提示“不是RAR文件”。也可能后续的版本的命令行RAR支持了这个功能吧

※还有注意不能使用最后是.rar的文件夹,因为那样会被判断是压缩包文件而去解压这个文件夹

显然会报错,所以要先改名再压缩此文件夹,这个BAT做的还不是特别完善,比如这个地方就应该用

文件属性去判断是D的话则为文件夹,不管什么名字直接去压缩,但是用Attrib命令来获取目标属性很难

不是获取很难,获取很简单,关键是不好从一个字符串中提取出关键属性值,用findstr老也做不出来

遂放弃了,直接用目标是否含有扩展名来判断了,所有就会有出现结尾是.rar的文件夹的误判,这也没办法

通过做这个也学到另外几个知识:

1,set <变量名> 命令只有执行失败ERRORLEVEL才会更改为1,成功不会更改为0

2,程序中尽量不要给ERRORLEVEL手动赋值(如:set  ERRORLEVEL=N),

否则会导致之后的ERRORLEVEL无法正常指示命令返回结果,ERRORLEVEL不再次手动更改,永远都为第一次设定值

所以ERRORLEVEL的值不到万不得已不要使用set命令进行人工赋值,除法你在后面的代码中不想再用ERRORLEVEL了
3,可以使用if "%%i"=="" 来判断变量是否为空,以前没注意过这个问题,今天才发现可以这么用

使用很简单,直接把要操作的文件拖放过来回车就行了

会自动判断是要解压还是要压缩,这里拖放过来一个C盘下的文件夹

(PS:不支持多文件拖放,应该是说CMD不支持)

回车自动判定为压缩文件,压缩完成后添加5%恢复记录

拖过一个RAR文件

自动判断为解压文件,解压完成,中途没有出现错误或警告

如果要解压的文件的目标文件名存在,则目标不可写,RAR提示没有解压任何文件

BAT也会提示:【注意】操作过程当中出现问题,请仔细查看操作过程提示信息

主界面不输入任何信息直接回车则进说明文档

批处理代码,复制保存到bat文件即可运行:

@echo off
title 简易命令行RAR      BY:小小沧海
::set RAR=%ProgramFiles%\WinRAR\WinRar.exe
set RAR=%ProgramFiles%\WinRAR\Rar.exe
set file=null
if NOT EXIST "%rar%" echo 【错误】您电脑上没有安装WinRAR,无法使用本程序&echo.&echo 按任意键退出...&pause>nul&exit

:top
cls
echo *******简易命令行RAR***********
echo 请把想要操作的文件拖放至此处回车即可(只支持单文件或文件夹)
echo 如若查看说明则回车
set file=help&set /p file=
if %file%==help goto help
if NOT EXIST %file% echo 输入的文件或文件夹不存在!请重新输入&pause>nul&goto top
for /f "delims=" %%i in ("%file:"=%") do (
    set exname=%%~xi
    ::判断是否有扩展名
    if "%%~xi"=="" (set IsExname=N) else set IsExname=Y
)
::如果为Y,即有扩展名。再判断如果扩展名是rar,则解压,否则去压缩
::如果为N,即无扩展名,则认定为文件夹或无扩展名文件,去压缩文件
if %IsExname%==Y (
    if /i "%exname%"==".rar" (goto unrar) else goto rar
) else goto rar

::=========压缩文件========
:rar
cls
echo ^>^>压缩文件
for /f "delims=" %%i in ("%file:"=%") do (
    "%RAR%" a -r -ep1 -rr5%% -xDesktop__.ini -x*\Desktop__.ini "%%i.rar" "%%i"
)
goto check
::========解压文件==========
:unrar
cls
echo ^>^>解压文件
for /f "delims=" %%i in ("%file:"=%") do (
    md "%%~dpni" 1>nul 2>nul
    "%RAR%" x "%%i" "%%~dpni"
)
::=======检查执行结果========
:check
if %ERRORLEVEL%==0 (echo.&echo 【恭喜】操作成功结束,按任意键返回主菜单...&pause>nul&goto top) else (
    echo.&echo 【注意】操作过程当中出现问题,请仔细查看操作过程提示信息
    echo 按任意键返回主菜单...
    pause>nul&goto top
)
::=======说明文档============
:help
cls
echo.
echo ┏━━━━━━━━━━━━━━━━━说明━━━━━━━━━━━━━━━━━━┓
echo ┃   ¤此BAT是为了病毒横行的机房而做,因为一旦中毒RAR就无法使用,压缩解压都无 ┃
echo ┃     法使用,但是发现命令行版的RAR不受影响依然可以使用,便做此命令行版RAR ┃
echo ┃   ¤特色1:在压缩时会从所有目录中自动屏蔽机房流氓病毒文件Desktop__.ini    ┃
echo ┃   ¤特色2:在压缩时会加入5%的恢复记录,以防RP后可恢复损坏的RAR中的内容     ┃
echo ┃                                ==注意==                                  ┃
echo ┃   ※在我制作测试的RAR 3.90版本中的命令行版RAR无法解压ZIP,7Z等其他格式   ┃
echo ┃     的压缩包文件,所以在设计时如果拖放进ZIP等文件会按照其他文件进行压缩  ┃
echo ┃     处理,而不会去解压。但WinRar不受影响,也可能后续的版本支持了这个功能 ┃
echo ┃   ※注意不能使用最后是.rar的文件夹,因为那样会被判断是压缩包文件而去     ┃
echo ┃     解压这个文件夹,显然会报错,所以要先改名再压缩此文件夹               ┃
echo ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
echo.
echo 按任意键返回主菜单...
pause>nul&goto top
exit

%ERRORLEVEL%  0 成功
%ERRORLEVEL%  1 失败
set exname只有执行失败ERRORLEVEL才会更改为1,成功不会更改为0
可以使用if "%%i"=="" 来判断变量是否为空

——原文发表于2011-6-19 23:16

时间: 2024-11-06 16:37:17

[批处理]简易命令行RAR的相关文章

批处理第三方命令行工具汇总(转)

名称 版本 功能简介 下载地址 BatProject.exe 0.5 批处理编辑器 http://www.bathome.net/thread-7186-1-1.html CWnd.exe N/A 窗口.句柄.进程操作 http://www.bathome.net/thread-5778-1-1.html Sum.exe N/A MD5.CRC.BASE64.SHA1加密字符串 http://www.bathome.net/thread-5954-1-1.html TimeBack.exe 1.

mac命令行压缩解压rar文件

去 http://www.rarlab.com/download.htm下载 rarosx 在Mac OS X系统中默认不支持 RAR 文件的解压缩.下面演示如何在Mac OS X系统中使用 rar 命令行操作. 1. 首先从rarlab 网站下载 rar/unrar 工具: 2. 解压缩下载的 tar.gz 压缩包(tar xvf rarosx-5.2.0.tar.gz),在下载目录Downloads下自动创建一个rar的目录,其中有rar / unrar 文件: 3. 进入终端(命令窗口  

Git简易的命令行入门教程

简易的命令行入门教程: Git 全局设置: git config --global user.name "imsoft" git config --global user.email "[email protected]" 创建 git 仓库: mkdir imsoft.github.io cd imsoft.github.io git init touch README.md git add README.md git commit -m "first

.bat批处理脚本让cmd命令行提示符cd到工作目录 (转)

打开cmd,检查命令行提示符所在的默认位置(目录),进入该目录用notepad++创建一个文件,输入 @echo offrem 这个符号表示该行是注释.rem 进入f盘,需要先切换盘符,成功后才能进入该盘下的目录f:cd \myworkspace\echo Job is done 然后保存文件,命名为 gtd.bat 直接变成了可执行的批处理脚本. 然后在cmd的命令行提示下执行该脚本(如下): gtd.bat 命令行提示符于是就进入目录f:/myworkspace/ 来自: http://ww

批处理/命令行合并js,递归合并子目录js文件

for /r %%i in (*.js) do type "%%i">>xxx-all.js java -jar yuicompressor.jar --type js --charset utf-8 -o xxx-min.js xxx-all.js 第一句意思是合并当前目录和子目录的全部js文件,输出为xxx-all.js 第二句结合yuicompressor,把js最小化 批处理/命令行合并js,递归合并子目录js文件

FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑

FFmpeg_Tutorial FFmpeg工具和sdk库的使用demo 一.使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑 1.基本介绍 对于每一个从事音视频技术开发的工程师,想必没有一个人对FFmpeg这个名称感到陌生.FFmpeg是一套非常知名的音视频处理的开源工具,它包含了开发完成的工具软件.封装好的函数库以及源代码供我们按需使用.FFmpeg提供了非常强大的功能,可以完成音视频的编码.解码.转码.视频采集.后处理(抓图.水印.封装/解封装.格式转换等),还有流媒体服务等

用bat批处理程序通过DOS命令行删除所有的空文件夹

用过gothub或者码云的同学都知道,不包含任何文件的空文件夹上传提交时不被允许的.当然你可以在空文件下创建.keep文件(或.gitkeep文件),然后就可以上传了. 但是如果空文件夹比较多,并且我们确实不需要这些空文件了,那本文就学习一种命令行删除所有空文件夹的方法.并封装成.bat批处理程序.通过鼠标右键运行即可. 一,DOS删除命令 1.1,删除文件命令 del 若是想删除文件,输入del 盘符名:\文件名,比如,我想删除一个在F盘的名为123.txt的文件,则输入  del f:\12

WinRAR命令行版本 rar.exe使用详解

RAR 命令行语法~~~~~~~~~~~~~~ 语法 RAR.exe <命令>  [ -<开关> ]  <压缩文件>  [ <@列表文件...> ]       [ <文件...> ]  [ <解压路径\> ] 常用命令 a       添加文件到压缩文件中. 例子: 1) 从当前目录添加所有的 *.hlp 文件到 help.rar 压缩文件: rar a help *.hlp 2) 如果目录包含文件掩码或以反斜线结尾,将会应用普通的

RAR、7-Zip在命令行下对数据进行压缩

3.6.1 RAR Winrar的命令行模式程序在安装目录下的 rar.exe (打包压缩程序),unrar.exe(解压缩程序) RAR.exe的常用参数如下: -a 添加文件到压缩文件 -k 锁定压缩文件 -s 生成存档文件(这样可以提高压缩比) -p 指定压缩密码 -r 递归压缩,包括子目录 -x 指定要排除的文件 -v 分卷打包,常用在在打包大文件时 -ep 从名称中排除路径 -ep1 从名称中排除基本目录 -m0 存储,只添加到压缩文件,不对文件进行压缩 -m1 最快压缩(低压缩比)