Board logo

标题: [文件操作] 批处理怎样批量解压RAR文件? [打印本页]

作者: conglin58    时间: 2010-6-19 01:33     标题: 批处理怎样批量解压RAR文件?

刚才看了一篇:http://www.bathome.net/viewthread.php?tid=7656
批处理怎样解压缩带密码的RAR自解压文件?"D:\WinRAR\rar.exe" x -p123456789 *.exe 123\


这样批量解压如果2个压缩包内都有setup.exe,文件名相同的话就会直接覆盖了!

请问版主或其他bat高手,这123\ 后面加什么参数才能做到【解压每个压缩文件到各自单独的文件夹】

第二个问题:批处理怎样解压带不相同密码的RAR自解压文件?
比如
c:\a.rar  解压密码:123   
C:\b.rar  解压密码:234
C:\C.rar  解压密码:345

这样三个rar文件   ,代码要怎样写才能做到批量解压?

附件下载:
http://bathome.net/attachment.php?aid=2652

[ 本帖最后由 conglin58 于 2010-6-29 17:28 编辑 ]
作者: hanyeguxing    时间: 2010-6-19 07:51

第一个问题:
方法1:使用-or开关自动重命名
方法2:
  1. for %%a in (*.exe) do "D:\WinRAR\rar.exe" x -p123456789 "%%a.exe" "123\%%a\"
复制代码
第二个问题:代码的编写取决于文件名于与密码的规则对应情况。以楼主的示例:
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (a123,b234,c345) do (
  3. set "a=%%a"
  4. "D:\WinRAR\rar.exe" x -p!a:~1! -or "!a:~0,1!.exe" "123\"
  5. )
复制代码

作者: conglin58    时间: 2010-6-22 01:30

新建一个txt文档,然后把所有的解压密码都复制进去,每行一个密码,然后在进行批量解压时让rar软件读取该文件中的密码

以这样的形式能用批处理搞定吗?
作者: sgaizxt001    时间: 2010-6-22 09:00

可以,下面这个代码由于时间来不及了我没有测试
  1. @echo off
  2. for %%a in (*.rar) do (
  3.    for /f "delims=" %%b in (pass.txt) do (
  4.     "D:\WinRAR\rar.exe" x -p%%b "%%a" *.* "%%a\"
  5. )
  6. )
复制代码

作者: wtwl    时间: 2010-6-22 15:03

高手啊,学习了!!!
作者: hanyeguxing    时间: 2010-6-22 15:22

原帖由 conglin58 于 2010-6-22 01:30 发表
新建一个txt文档,然后把所有的解压密码都复制进去,每行一个密码,然后在进行批量解压时让rar软件读取该文件中的密码

以这样的形式能用批处理搞定吗?
你测试过2楼的代码?显然你没有。你想不到、做不到,只能说你没这个能力而已,不代表别人就做不到。
作者: conglin58    时间: 2010-6-25 00:49

c:\a.rar  解压密码:123   
C:\b.rar  解压密码:234
C:\C.rar  解压密码:345
这样三个rar文件   ,代码要怎样写才能做到批量解压?
-----------------------------------------------------------------------------------------------
@echo off&setlocal enabledelayedexpansion
for %%a in (a123,b234,c345) do (
set "a=%%a"
"D:\WinRAR\rar.exe" x -p!a:~1! -or "!a:~0,1!.exe" "123\"
)
-----------------------------------------------------------------------------------
RAR 3.93    版权 (C) 1993-2010 Alexander Roshal    15 三月 2010
已注册给 Federal Agency for Education
不能打开 a.exe
系统找不到指定的文件。
没有要解压的文件
RAR 3.93    版权 (C) 1993-2010 Alexander Roshal    15 三月 2010
已注册给 Federal Agency for Education
不能打开 b.exe
系统找不到指定的文件。
没有要解压的文件
RAR 3.93    版权 (C) 1993-2010 Alexander Roshal    15 三月 2010
已注册给 Federal Agency for Education
不能打开 c.exe
系统找不到指定的文件。
没有要解压的文件

朋友你这么有信心的让我测试怎么结果却是这样的???


原帖由 hanyeguxing 于 2010-6-22 15:22 发表
你测试过2楼的代码?显然你没有。你想不到、做不到,只能说你没这个能力而已,不代表别人就做不到。


试问你怎么知道我没测试过呢???来论坛提问就是为了学习的,最关键的是我想到了,所以才会提问,但好像是你写的代码做不到我想要的结果???

我不怀疑你对批处理的编译能力,但却很担心你对中文的理解能力,r u chinease?

既然你是技术组成员,至少应该自己先测试一下结果吧,我也很想问问你自己测试过2楼的代码?显然你才是没有。要不然也不会有这个结果了!指责别人之前应该先审视一下自己,大家以礼相待,你又何必呢?
作者: sgaizxt001    时间: 2010-6-25 00:53

你的压缩包里有a.exe吗
作者: conglin58    时间: 2010-6-25 04:51

@echo off&setlocal enabledelayedexpansion
for %%a in (a123,b234,c345) do (
set "a=%%a"
"D:\WinRAR\rar.exe" x -p!a:~1! -or "!a:~0,1!.exe" "123\"
)

把红色的地方改成rar
@echo off&setlocal enabledelayedexpansion
for %%a in (a123,b234,c345) do (
set "a=%%a"
"D:\WinRAR\rar.exe" x -p!a:~1! -or "!a:~0,1!.rar" "123\"
)

总算能解压了!但该批处理指定了abc这三个rar文件的密码,要是需要解压的文件多的话还是一样麻烦!

一晚上没睡觉我终于找到个软件能搞定,
作者: nx8o9iyxbq1m    时间: 2010-6-25 14:34

加一个 -ad 参数,可以解压每个压缩文件到各自单独的文件夹
作者: conglin58    时间: 2010-6-29 17:19

那正确的代码是不是以下这样?

for %%a in (*.exe) do "C:\Program Files\WinRAR\rar.exe"  x -p123456789 -ad *.exe

for %%a in (*.exe) do "C:\Program Files\WinRAR\rar.exe"  x -p123456789 "%%a" -ad *.exe

顺便问一下%%a是代表什么含义?刚才我测试了!好像是第二个批处理能顺利解压,第一个批处理不行!

请问类似这样的参数详细说明论坛有相关的帖子看看吗?

[ 本帖最后由 conglin58 于 2010-6-29 17:26 编辑 ]
作者: Batcher    时间: 2010-6-29 20:34     标题: 回复 11楼 的帖子

批处理for命令从入门到精通以及配套练习题
http://bbs.bathome.net/thread-2189-1-1.html
http://bbs.bathome.net/thread-2336-1-1.html




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2