中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]批处理直接调用winrar程序
作者:
标题: [求助]批处理直接调用winrar程序 上一主题 | 下一主题
kongzi
新手上路





积分 9
发帖 9
注册 2007-12-5
状态 离线
『楼 主』:  [求助]批处理直接调用winrar程序

如何使用批处理直接调用系统的winrar程序,无论压缩程序安装到哪个盘都可以直接调用!!!

2008-11-16 14:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
balinger
中级用户




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

@echo off
for /f "tokens=1,2,*" %%i in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe" /ve') do set "rar=%%k"
echo %rar%
pause

   此帖被 +1 点积分    点击查看详情   
评分人:【 kongzi 分数: +1  时间:2008-11-16 15:22


2008-11-16 14:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kongzi
新手上路





积分 9
发帖 9
注册 2007-12-5
状态 离线
『第 3 楼』:  

非常感谢balinger,但是我运行了一下,为什么按任意键继续后就退出了,没有运行winrar程序呀!

2008-11-16 15:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 4 楼』:  


@echo off
if exist "C:\Program Files\WinRAR\WinRAR.exe" (
  set WinRAR_Path=C:\Program Files\WinRAR\WinRAR.exe
) else (
  reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe" tmp.reg >nul
  for /f "skip=3 delims== tokens=2" %%a in ('type tmp.reg') do (
    set WinRAR_Path=%%~a
    call set WinRAR_Path=%%WinRAR_Path:\\=\%%
    del tmp.reg
    goto next
  )
)

:next
start "" "%WinRAR_Path%" d "压缩包文件名" "要删除的文件名"
可恶的 reg.exe 的 BUG...直接 reg query 会缺字符,没办法只能先导出。

[ Last edited by tireless on 2008-11-16 at 17:38 ]

2008-11-16 15:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kongzi
新手上路





积分 9
发帖 9
注册 2007-12-5
状态 离线
『第 5 楼』:  

我是想写一个批处理遍历系统的rar压缩包,调用winrar命令行删除rar压缩包里的某一个文件。这个批处理如何来写。谢谢!!!winrar d 是删除压缩包里的文件。

[ Last edited by kongzi on 2008-11-16 at 15:48 ]

2008-11-16 15:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 6 楼』:  Re 5楼

4 楼代码已更新。

[ Last edited by tireless on 2008-11-16 at 15:54 ]

   此帖被 +1 点积分    点击查看详情   
评分人:【 kongzi 分数: +1  时间:2008-11-16 16:00


2008-11-16 15:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kongzi
新手上路





积分 9
发帖 9
注册 2007-12-5
状态 离线
『第 7 楼』:  

我运行了一下报错。:(

2008-11-16 16:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 8 楼』:  Re 7楼

报错信息是?

2008-11-16 16:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kongzi
新手上路





积分 9
发帖 9
注册 2007-12-5
状态 离线
『第 9 楼』:  

我再说的具体点想写一个批处理遍历系统的rar压缩包,如果压缩包里有1.exe调用winrar命令行删除rar压缩包里的1.exe这个程序。这个批处理如何来写。谢谢!!!winrar d 是删除压缩包里的文件。

2008-11-16 16:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kongzi
新手上路





积分 9
发帖 9
注册 2007-12-5
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by tireless at 2008-11-16 04:01 PM:
报错信息是?

---------------------------
C:\Program
---------------------------
Windows 找不到文件 'C:\Program'。请确定文件名是否正确后,再试一次。要搜索文件,请单击「开始」按钮,然后单击“搜索”。
---------------------------
确定   
---------------------------

2008-11-16 16:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kongzi
新手上路





积分 9
发帖 9
注册 2007-12-5
状态 离线
『第 11 楼』:  

for /d %%i in (C,D,E,F,G,H,I,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z\*.rar) do (
IF exist %%i: (
winrar.exe d %%c\*.rar 1.exe
)
)
这是我写的肯定不对,这个只是遍历磁盘根目录下的压缩包文件。

2008-11-16 16:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 12 楼』:  



  Quote:
Originally posted by kongzi at 2008-11-16 04:05 PM:

---------------------------
C:\Program
---------------------------
Windows 找不到文件 'C:\Program'。请确定文件名是否正确后,再试一次。要搜索文件,请单击「开始 ...

不好意思,弄错了个地方。再试试 4 楼的代码。

2008-11-16 16:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
kongzi
新手上路





积分 9
发帖 9
注册 2007-12-5
状态 离线
『第 13 楼』:  

非常感谢tireless程序可以运行了,但是好像没有实现我的预期的效果。

2008-11-16 16:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kongzi
新手上路





积分 9
发帖 9
注册 2007-12-5
状态 离线
『第 14 楼』:  我结合了一下,好像不行,那位高人给调试一下

for /d %%i in (C,D,E,F,G,H,I,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z\*.rar) do (
IF exist %%i: (if exist "C:\Program Files\WinRAR\WinRAR.exe" (
  set WinRAR_Path=C:\Program Files\WinRAR\WinRAR.exe
) else (
  reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe" tmp.reg

>nul
  for /f "skip=3 delims== tokens=2" %%a in ('type tmp.reg') do (
    set WinRAR_Path=%%~a
    call set WinRAR_Path=%%WinRAR_Path:\\=\%%
    goto next
  )
)

:next
start "" "%WinRAR_Path%" d "%%c\*.rar" "1.exe"
del tmp.reg

)
)

2008-11-16 16:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 15 楼』:  

这个是只搜索盘符根目录下的 .rar 文件:
@echo off
if exist "C:\Program Files\WinRAR\WinRAR.exe" (
  set WinRAR_Path=C:\Program Files\WinRAR\WinRAR.exe
) else (
  reg export "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe" tmp.reg >nul
  for /f "skip=3 delims== tokens=2" %%a in ('type tmp.reg') do (
    set WinRAR_Path=%%~a
    call set WinRAR_Path=%%WinRAR_Path:\\=\%%
    del tmp.reg
    goto next
  )
)

:next
for %%A in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
  if exist %%A: (
    for %%a in (%%A:\*.rar) do (
      start "" "%WinRAR_Path%" d -INUL "%%a" "1.exe"
    )
  )
)
如果要搜索包括子目录的 .rar 文件,将:

for %%a in (%%A:\*.rar)

改为:

for /r %%A: %%a in (*.rar)

[ Last edited by tireless on 2008-11-16 at 17:35 ]

2008-11-16 17:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: