中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-13 12:40
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » for 调用winrar批量生成压缩文件 大家帮忙看看 查看 3,290 回复 23
16 发表于 2007-02-07 03:36 ·  中国 北京 东城区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
兄别着急,我在我这里正在测试(怕万一出个错误删掉兄的文件可麻烦了:),有更短的命令可以完成,一会我发上来:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
17 我试了试 发表于 2007-02-07 03:41 ·  中国 四川 绵阳 江油市 电信
高级用户
★★★
积分 502
发帖 327
注册 2006-12-30 06:01
19年会员
UID 74981
性别 男
状态 离线
我试了试:
for /f %%a in ('dir /b /s') do rar a /r /sfx %%a "%%a"

好像可以满足要求,但是得把rar.exe和Default.SFX放在一块,直接就是自解压文件

希望对你有帮助
18 发表于 2007-02-07 03:49 ·  中国 北京 东城区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
回txtrain兄:

执行下面命令前(一劳永逸)需要设置初始值:

1)给 Winrar.exe 所在的目录设置路径,让系统可以找得到。
  如果觉得麻烦,可以将 WinRAr.exe 拷贝到 Windows 目录内,这样省去了手工设置路径的麻烦:)


2)将 \Program Files\WinRAR\ 目录内的 Default.SFX 这个文件拷贝到 Windows 目录内。
  这是 Winrar 或 RAR 在压缩自解压文件时所要读取的一个“字典”文件,如果不将其拷贝到已设置好的路径中,则压缩时找不到,也就压缩不了。

  拷贝了这个文件到 Windows 目录内,以后就可以一个压缩命令一步完成 .exe 自解压文件的建立。



命令行直接键入:




for /f %i in ('dir /b /ad') do winrar a /r /m5 /sfx "e:\bak\%i.exe" "%i"



将当前目录下的 下一级目录以及在内的所有文件 压缩成自解压(.EXE)格式,并将压缩成的 .exe 文件存到 E:\BAK 目录中。


DIR /AD 是只列目录,滤掉文件。
如果只有 dir /b 的话,则会连文件与目录名全都被 for 枚举出来。

我在%i 参数以及操作时均加有双引号,这样当遇到含有空格的目录名时照样可以工作,而不会出错。
如果不加双引号,则遇含有空格的文件名时又正遇到 MD 或 RD 等危险命令时很可能会发生意想不到的意外……



我这里通过测试:)
版本: RAR 3.0 未注册版,Windows 2003

[ Last edited by redtek on 2007-2-6 at 02:52 PM ]
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
19 发表于 2007-02-07 03:51 ·  中国 北京 东城区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
非常感谢qingfushuan兄指点~:)))
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
20 呵呵 发表于 2007-02-07 04:25 ·  中国 四川 绵阳 江油市 电信
高级用户
★★★
积分 502
发帖 327
注册 2006-12-30 06:01
19年会员
UID 74981
性别 男
状态 离线
我还是菜鸟的哈,从无忧泡到联盟就是想学习for的哦,谢谢LZ提供感兴趣的题材

实际上LZ已经完成了的,只是没用rar /? 咨询罢了,不敢窃天之功啊,我的关机脚本

就有:start c:\Progra~1\WinRAR\rar.exe a /r /s /m1 f:\mybackup\bak\%date%.rar f:\mybackup\backup 这一句,因而熟悉点

[ Last edited by qingfushuan on 2007-2-6 at 03:29 PM ]
21 发表于 2007-02-07 04:38 ·  中国 北京 东城区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
qingfushuan兄客气啦:)
我在眼里没菜鸟,每个人都有数不尽可以学习的地方~:)))
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
22 感谢二位大哥 发表于 2007-02-07 06:23 ·  中国 北京 鹏博士BGP
初级用户
积分 28
发帖 12
注册 2007-01-19 05:33
19年会员
UID 76978
性别 男
状态 离线
刚好,小弟最后那一帖子在十五楼,没看到 还有第二页不好意思.感谢你们为我这个问题所花费的时间.这是无价的.但是不完美的地方是E:\temp>for /f %a in ('dir /b /ad') do winrar a /r /sfx /m5 "e:\temp\%a.exe" "%a
"这一句一执行,会同时打开N个压缩文件进行压缩,试想一下,如果N够大的话.肯定会机器垮掉,而且有可能因为机器过忙压缩好的文件会出现压缩错误的情况

不捉迷藏了,这样就可以解决了.
for /f %a in ('dir /b /ad') do start /w winrar /a /r /sfx /m5 "e:\temp\%a.exe" "%a"


还有为了分享,我告诉大家一点经验.有时候压缩大文件的时候,可能会出现CRC失败之类的信息,这个时候压缩的时候选择压缩方式"最好"."创建固实压缩"一般可以解决问题.如果还是不能解决,呵呵,换个服务器版本的操作系统试试,这是小弟郁闷很久后的一点心得,拿出来省的大家再走弯路.

还有一点要求讲解的是,为什么那个for 语句最后面还要再跟一个"%a"呢?

[ Last edited by txtrain on 2007-2-6 at 05:43 PM ]
23 发表于 2007-02-07 07:15 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
有了qingfushuan兄和txtrain兄对WinRAR的经验之谈,以后网友再解决一些关于压缩方面的问题看此帖参考相关内容就再方便不过啦~:)
 
 
 
 
 
 
 
【 正文检索主题词: RAR WINRAR 压缩 压缩文件 压缩目录 Default.SFX /W /WAIT 】

[ Last edited by redtek on 2007-2-6 at 06:21 PM ]
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
24 发表于 2007-02-07 07:23 ·  中国 北京 朝阳区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
Originally posted by txtrain at 2007-2-6 17:23:
有时候压缩大文件的时候,可能会出现CRC失败之类的信息,这个时候压缩的时候选择压缩方式"最好"."创建固实压缩"一般可以解决问题



欣赏txtrain兄经验之谈,学习了~:)
收藏~:)

[ Last edited by redtek on 2007-2-6 at 06:24 PM ]
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
论坛跳转: