中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 【已解决】删除全盘RAR文件内的指定文件批处理
作者:
标题: 【已解决】删除全盘RAR文件内的指定文件批处理 上一主题 | 下一主题
lg560852
初级用户





积分 60
发帖 26
注册 2006-12-31
状态 离线
『楼 主』:  【已解决】删除全盘RAR文件内的指定文件批处理


for /f %%i in ('dir /s/b/a-d %a%:\*.rar') do c:\progra~1\winrar\rar.exe d %%~ni aa.txt
pause
不知是否有误?
可否容错?(例如winrar安装路径或系统路径不同)
若是还想同时删除bb.txt该如何添加代码?(要求,aa.txt和bb.txt都要删除,若不存在即放过)

[ Last edited by lg560852 on 2008-7-19 at 02:47 PM ]

2008-7-17 14:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lg560852
初级用户





积分 60
发帖 26
注册 2006-12-31
状态 离线
『第 2 楼』:  

刚才试了下,直接报错

  Quote:
文件名、目录名或卷标语法不正确。

郁闷了,是不是查找出问题了?

2008-7-17 15:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  

%a%从哪里来的?



2008-7-17 16:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lg560852
初级用户





积分 60
发帖 26
注册 2006-12-31
状态 离线
『第 4 楼』:  

囧,貌似写错了
应该是%i%
但我改了还是出那个提示

[ Last edited by lg560852 on 2008-7-17 at 04:21 PM ]

2008-7-17 16:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  

囧,改成i%也不对,for命令没有这样的用法,你从哪里找到的这个代码?



2008-7-17 16:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lg560852
初级用户





积分 60
发帖 26
注册 2006-12-31
状态 离线
『第 6 楼』:  

帖子找不到了
只找到了以前拷贝下的代码
@echo off
for %%a in (c d e f g h i j k l m n o p q r s t) do (for /f "delims=" %%i in ('dir /s/b/a-d %%a:\*.jpg 2^>nul') do (if exist "f:\123\%%~ni%%~xi" (call :111 "%%i" "%%~ni") else (copy "%%i" "f:\123\")))
cls
echo 搜索完毕
pause&exit
:111
if %1=="f:\123\%~2.jpg" goto :EOF
set a=1
:222
if exist "f:\123\%~2-%a%.jpg" set /a a+=1 &goto 222
copy %1 "f:\123\%~2-%a%.jpg"
goto :EOF
我看出来了,是我写错了,请哪位帮忙改下?

[ Last edited by lg560852 on 2008-7-17 at 04:49 PM ]

2008-7-17 16:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lg560852
初级用户





积分 60
发帖 26
注册 2006-12-31
状态 离线
『第 7 楼』:  

自己来顶一下,问题还是没能解决。

2008-7-18 04:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
balinger
中级用户




积分 356
发帖 115
注册 2004-7-27
状态 离线
『第 8 楼』:  

@echo off
for %%a in (c d e f g h i j k l m n o p q r s t) do (for /f "delims=" %%i in ('dir /s/b/a-d %a%:\*.rar') do ("C:\Program Files\winrar\rar.exe" d -inul "%%i" aa.txt bb.txt))
pause

2008-7-18 13:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lg560852
初级用户





积分 60
发帖 26
注册 2006-12-31
状态 离线
『第 9 楼』:  

楼上兄弟您好
我试用了下,还是有那个提示:文件名、目录名或卷标语法不正确。
不知是否是我系统问题,我的系统是WIN2003。

2008-7-18 14:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 10 楼』:  

@echo off
for %%a in (c d e f g h i j k l m n o p q r s t) do for /f "delims="

%%i in ('dir /s/b/a-d %%a:\*.rar 2^>nul') do echo %%i
pause>nul

2008-7-18 14:38
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
lg560852
初级用户





积分 60
发帖 26
注册 2006-12-31
状态 离线
『第 11 楼』:  

楼上的兄弟您好
在执行您的代码的时候出现错误提示:此时不应有2
我就将你的那个2及后面的(不知是不是不提示错误信息的意思)去掉了
然后批处理貌似可行了
请你过一下目
::@echo off
for %%a in (c d e f g h i j k l m n o p q r s t) do (for /f "delims=" %%i in ('dir /s/b/a-d %%a:\*.rar')  do ("c:\progra~1\winrar\rar.exe " d -inul "%%i" aa.txt bb.txt))
pause

2008-7-18 14:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 12 楼』:  

你没加上^,当然是不行的。

去掉了2>nul

是会出现找不到错误的。

2008-7-18 14:58
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
balinger
中级用户




积分 356
发帖 115
注册 2004-7-27
状态 离线
『第 13 楼』:  

winrar安装路径是什么?是不是要在winrar安装路径不确定的情况下?

2008-7-18 14:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lg560852
初级用户





积分 60
发帖 26
注册 2006-12-31
状态 离线
『第 14 楼』:  

抱歉由于测试时间较长,这么晚才回复。
非常感谢大家的帮助!
现在批处理执行基本成功!
RE:12楼
那个我也不大清楚了,但是批处理确实运行成功了,您可以讲一下那段2^>nul的意思吗?我试过,加上或不加运行时好像没看出区别。
RE:13楼
WINRAR的默认安装路径是C:\Program Files\但我记得好像在DOS下要写成c:\progra~1\来着,不知对不对?若是要增加容错性,是否要添加代码获取RAR路径?


这个批处理总体执行效率还算可以,只要不碰上太大压缩包。
当碰上带密码的压缩包就会停止,所以我加上了 -p-参数

可以说这个问题已经解决了,但是还是想问一下,若是我想看看到底删除了那些RAR文件内的指定文件,也就是一个操作日志,该如何添加代码?

[ Last edited by lg560852 on 2008-7-18 at 03:54 PM ]

2008-7-18 15:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: