中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-03 03:25
48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 如果1个文件夹里有*.txt或*.exe则把该文件夹压缩
可打印版本  1,136 / 12
第1楼 tuesposo 发表于 2007-01-17 04:07
初级用户 发帖 28 积分 68
如果1个文件夹里有*.txt或*.exe则把该文件夹压缩
我想实现这个功能:
如果1个文件夹里有*.txt或*.exe,则把该文件夹压缩为.rar文件,压缩完后并把这个原文件夹删除,这个功能应该如何实现啊?

注:不包含子文件夹,如一级文件夹--二级文件夹--三级文件夹---5.txt
则把三级文件夹压缩为三级文件夹.rar,压缩完后并把原三级文件夹删除.
一级文件夹和二级文件夹不用动.

这个有办法做吗?
第2楼 redtek 发表于 2007-01-17 04:39
金牌会员 发帖 1,147 积分 2,902
RAR的 /DF 参数(生成压缩档案后删除文件)就支持压缩完目标文件或文件夹以后将其删掉。

所以,压缩以后的删除目录的工作不用交给DOS命令去做,让rar去做就行了,/DF参数支持。




RAR的 /R 参数支持压缩指定目录以内这个目录内所有子目录。



假如我要压缩 “C:\TEMP\STR” 这个目录以及它下面的所有子目录。

C:\TEMP\STR 目录结构如下:



使用 rar.exe 操作过程:




当执行完以后,C:\TEMP\STR 目录被压缩以后,由RAR自动将其删掉了。


如果你只希望压缩当前指定的目录文件夹,而不希望压缩目录文件夹内的子目录,则rar压缩时无需加 /r 参数即可。


更详细的 rar 命令行操作详见它的帮助信息: RAR /?


(另: rar.exe 在 WinRAR 目录中,系统没有给它设置路径。所以要在任何地方运行它请为其所在目录设置路径,或将 rar.exe 拷贝到 Windows 目录下就可以不用设置路径了)

(注:上面只是可行操作原理。关于具体的实际代码兄可以继续研究~:)

[ Last edited by redtek on 2007-1-16 at 03:43 PM ]
第3楼 zh159 发表于 2007-01-18 23:44
金牌会员 发帖 1,467 积分 3,687
dir/s *.exe *.txt>nul 2>nul&&rar ......
第4楼 tuesposo 发表于 2007-01-19 00:01
初级用户 发帖 28 积分 68
你的不行啊
第5楼 zh159 发表于 2007-01-19 00:17
金牌会员 发帖 1,467 积分 3,687
不会自己加上路径么?

dir/s c:\temp\str *exe *.txt>nul 2>nul&&rar a /r /df demo c:\temp\str
第6楼 tuesposo 发表于 2007-01-19 02:25
初级用户 发帖 28 积分 68
还是不行,不是路径的问题,好象对这个文件夹也是一个变量的问题
第7楼 zh159 发表于 2007-01-19 02:35
金牌会员 发帖 1,467 积分 3,687
你得用for将各个文件夹单独一个个列出来(完整路径)再
获取子目录路径:dir/s/ad/b 路径

dir “%路径%” *exe *.txt>nul 2>nul&&rar a /r /df demo “%路径%”

[ Last edited by zh159 on 2007-1-18 at 01:39 PM ]
第8楼 zerocq 发表于 2007-01-19 02:51
中级用户 发帖 196 积分 458
在一级目录命令窗口输入
for /f "delims=的" %a in ('dir /a/s *.txt^|find ":\"') do @echo %a
把含有txt文件的子目录全设成变量然后rar

[ Last edited by zerocq on 2007-1-19 at 02:52 AM ]
第9楼 tuesposo 发表于 2007-01-19 03:04
初级用户 发帖 28 积分 68
看不懂脑子混了
第10楼 tuesposo 发表于 2007-01-19 03:13
初级用户 发帖 28 积分 68
谁好帮我完整写出来啊,我是新手不懂啊
第11楼 zh159 发表于 2007-01-19 03:28
金牌会员 发帖 1,467 积分 3,687
命令行:
for /f "delims=的" %a in ('dir /a/s *.txt *.exe^|find ":\"') do rar a /r /df demo %a

批处理:
for /f "delims=的" %%a in ('dir /a/s *.txt *.exe^|find ":\"') do rar a /r /df demo %%a
第12楼 tuesposo 发表于 2007-01-19 03:43
初级用户 发帖 28 积分 68
找不到文件
第13楼 everest79 发表于 2007-01-19 05:36
金牌会员 发帖 1,127 积分 2,564
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023