Board logo

标题: [文件操作] [已解决]批处理如何批量修改RAR压缩包注释中的指定字符? [打印本页]

作者: boyjackson    时间: 2010-4-15 14:46     标题: [已解决]批处理如何批量修改RAR压缩包注释中的指定字符?

哪位好心的大哥可以帮帮我啊,大家看我上传的图片,应该明白我的意思了。谁能帮我写批量执行文件啊?先谢谢各位达人了!

---------------已有参考1------------------------------
winrar下面有个rar.exe,可以在命令行下运行
它可以在命令行下把注释导出文件或者添加注释
有了这个可以考虑自己写程序替换内容
------------------------------------------------------

---------------已有参考2------------------------------
  1. @echo off
  2. set "rar=C:\Program Files\WinRAR\rar.exe"
  3. for %%a in ("C:\test\*.rar") do (
  4. "%rar%" vt "%%a" >"%temp%\%%~na.txt"
  5. for /f "delims=" %%h in ('findstr "注释:" "%temp%\%%~na.txt"') do (
  6. set "comment=%%h"
  7. )
  8. set "comment=%comment:~4%"
  9. set "comment=%comment:天空=华军%"
  10. echo %comment% | "%rar%" c "%%a"
  11. )
复制代码
------------------------------------------------------

参考2是一好心的大哥帮我写的,可是我还是没能解决问题,在我执行他提供的代码后,压缩包里的注释变成了“ECHO 处于打开状态。”我现在找不到他了!
作者: boyjackson    时间: 2010-4-15 14:48

  1. @echo off
  2. echo 正在处理请稍候。。。
  3. for /f "delims=" %%i in ('dir /a-d /b *.rar') do (
  4. rar cw "%%i" t1.txt>nul
  5. for /f "delims=" %%k in (t3.txt) do echo %%k>>t2.txt
  6. for /f "skip=4 delims=" %%j in (t1.txt) do echo %%j>>t2.txt
  7. rar c -zt2.txt "%%i">nul
  8. del t1.txt
  9. del t2.txt
  10. )
  11. echo.
  12. echo 处理完毕按任意键退出!
  13. pause>nul
复制代码


参考三,不过这个我不能指定我想替换的关键字!
作者: boyjackson    时间: 2010-4-15 14:56

顺便再问下

现在替换的是注释里的文字

如果想替换 网址 和 特殊字符  

批处理一样可以搞定对吧?
作者: hanyeguxing    时间: 2010-4-15 15:20

  1. @echo off
  2. set "rar=C:\Program Files\WinRAR\rar.exe"
  3. for %%a in ("C:\test\*.rar") do (setlocal enabledelayedexpansion
  4. "%rar%" vt "%%a" >"%temp%\%%~na.txt"
  5. for /f "delims=" %%h in ('findstr "注释:" "%temp%\%%~na.txt"') do set "c=%%h"
  6. set "c=!c:~4!"
  7. set "c=!c:天空=华军!"
  8. echo !c! | "%rar%" c "%%a")
复制代码
1,如果涉及敏感字符,则使用sed、fr等修改%temp%\%%~na.txt文件,然后从文件添加注释,如rar.exe c -z注释文本.txt 压缩文件名
2,winrar.exe和rar.exe都可以执行相同的操作
3,rar.exe的命令行语法说明在winrar目录下的rar.txt中
4,winrar.exe的命令行语法说明在winrar目录下的WinRAR.chm或WinRAR.hlp中

[ 本帖最后由 hanyeguxing 于 2010-4-15 15:23 编辑 ]
作者: boyjackson    时间: 2010-4-15 16:04

  1. ╔— 提车软件 ゛——————————╗
  2. │   让你的软件超越超越超越超       │
  3. │   论坛支持:bbs.51ddd.com        │
  4. ╚——————————— 51ddd.Com—╝
  5. windows 7 官方正式版景象文件
  6. windows 7 官方正式版景象文件
  7. windows 7 官方正式版景象文件
复制代码

感谢达人热心帮助,可以替换,但有个问题,替换之后只保留了第一行的信息,之后的都没了!

达人可以用我提供的注释测试,

我想替换的是“提车软件”和“51ddd.Com” 两部分内容!

[ 本帖最后由 boyjackson 于 2010-4-15 16:05 编辑 ]
作者: hanyeguxing    时间: 2010-4-15 18:04

未测试
  1. @echo off&setlocal enabledelayedexpansion
  2. set "rar=C:\Program Files\WinRAR\rar.exe"
  3. for %%a in ("C:\test\*.rar") do (
  4. del /q *.h 2>nul
  5. "%rar%" cw "%%~na" hanye.h
  6. for /f "delims=" %%c in (hanye.h) do (set "c=%%c"
  7. set "c=!c:提车软件=寒夜孤星!"
  8. set "c=!c:51ddd.Com=bathome.net!"
  9. echo.!c!)>>guxing.h
  10. "%rar%" c -zguxing.h "%%~na")
复制代码
使用 rar 下的 cw 开关导出注释文件到hanye.h
使用 for 或其他命令修改hanye.h为guxing.h
使用 rar 下的 c -z注释 开关导入注释文件

[ 本帖最后由 hanyeguxing 于 2010-4-15 18:09 编辑 ]
作者: boyjackson    时间: 2010-4-15 21:09

达人解决了我一个大的问题,非常之感谢!

再次感谢!!!

请教下达人,有个别替换不了的,是不是RAR锁定了?还是别的什么原因?

如果是锁定了,有没有批量解锁的工具呢?

再次谢过!

在批处理过程中 有的提示完成 有的如下提示
作者: GNU    时间: 2010-4-15 21:17     标题: 回复 7楼 的帖子

你自己测试一下不就知道它是否锁定了?
作者: hanyeguxing    时间: 2010-4-15 21:21

原帖由 boyjackson 于 2010-4-15 21:09 发表
达人解决了我一个大的问题,非常之感谢!

再次感谢!!!

请教下达人,有个别替换不了的,是不是RAR锁定了?还是别的什么原因?

如果是锁定了,有没有批量解锁的工具呢?

再次谢过!

在批处理过程中  ...

把你实际运行的代码贴出来
作者: boyjackson    时间: 2010-4-15 21:44

实际运行代码已短信发于你!
作者: GNU    时间: 2010-4-15 21:45     标题: 回复 10楼 的帖子

直接贴出来给大家看看不行么?
作者: hanyeguxing    时间: 2010-4-15 22:12

WinRAR.exe和RAR.exe在处理rar文件时,可以忽略扩展名,例如:
rar c -zinfo.txt dummy
导入注释文本info.txt到dummy,处理时自动扩展dummy为dummy.rar
但在一种情况下例外,就是在.rar文件名中存在点(.),如dum.my,这个时候WinRAR.exe或RAR.exe将其扩展成dum.my,而不是dum.my.rar,所以WinRAR.exe和RAR.exe就找不到文件了

所以,以我在6楼的代码为例子,如果.rar的文件名中可能有点(.),则需要改成:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "rar=C:\Program Files\WinRAR\rar.exe"
  3. for %%a in ("C:\test\*.rar") do (
  4. del /q *.h 2>nul
  5. "%rar%" cw "%%a" hanye.h
  6. for /f "delims=" %%c in (hanye.h) do (set "c=%%c"
  7. set "c=!c:提车软件=寒夜孤星!"
  8. set "c=!c:51ddd.Com=bathome.net!"
  9. echo.!c!)>>guxing.h
  10. "%rar%" c -zguxing.h "%%a")
复制代码
即把%%~na改成%%a,以完整文件名操作

[ 本帖最后由 hanyeguxing 于 2010-4-15 22:17 编辑 ]
作者: boyjackson    时间: 2010-4-15 22:32

寒夜孤星 达人 您真是好人 没的说!

在您的帮助下,我已经完全可以搞定我要搞的东西了!

您的无私 热情 让我感动不已! 以后有什么要我帮忙的尽管开口!

本贴可以结贴了! 谢谢!
作者: hanyeguxing    时间: 2010-4-15 22:35

修改主题,在前面加上[已解决]

[ 本帖最后由 hanyeguxing 于 2010-4-16 17:47 编辑 ]




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