[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 求教大神,批处理搜索rar压缩包中的文件,并自动更新文件

在"材料"的文件夹中..有一堆rar文件..很多rar压缩文件里面有个旧的文档,名为:test.doc   .crc32值为xxxxxxxx
如何使用批处理,把存在:test.doc,且crc32值为xxxxxxxx压缩包查找出来.并且把目录下的new.doc 更新进去到test.doc?

数据正确的话 再添加一条压缩命令即可
Rar.exe路径 自己定一下
  1. @echo off&setlocal enabledelayedexpansion
  2. set "ph=材料"
  3. set "file=test.doc"
  4. for /f "tokens=*" %%i in ("C:\Program Files\WinRAR\Rar.exe") do set "rar=%%~si"
  5. for /f "tokens=*" %%a in ('dir /b/a-d "%ph%\*.rar"') do (
  6.          for /f "tokens=7" %%i in ('%Rar% v "%ph%\%%a" %file% ^| findstr /ierc:"  %file%"') do (
  7.              echo;%%a   CRC32:   %%i
  8.          )
  9. )
  10. pause
复制代码

TOP

回复 2# terse

大哥,我试了下,没反映哦.
@echo off&setlocal enabledelayedexpansion
set "ph=d:\材料"
set "file=test.doc"
for /f "tokens=*" %%i in ("C:\Program Files\WinRAR\Rar.exe") do set "rar=%%~si"
for /f "tokens=*" %%a in ('dir /b/a-d "%ph%\*.rar"') do (
         for /f "tokens=7" %%i in ('%Rar% v "%ph%\%%a" %file% ^| findstr /ierc:"  %file%"') do (
             echo;%%a   CRC32:   %%i
         )
)
pause
rar目录也正确,执行后
C:\rar>1.bat
请按任意键继续. . .
不会出现 echo;%%a   CRC32:   %%i

另外大哥说的数据正确在添加压缩命令是什么意思?
如果数据正确返回应该是echo;xxxx.rar   CRC32:   00000000
返回这样的情况要如何替换rar中的文件呢?

TOP

回复 3# Lundy


    这个代码的第一行删掉再执行一遍看看是否有线索
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Lundy
添加下面代码执行看什么结果
  1. %Rar% v  *.rar %file% | findstr /ierc:"  %file%
复制代码

TOP

回复 4# Batcher
回复 5# terse
感谢大神们的回复,下面是我修改后的代码:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "ph=c:\rar"
  3. set "file=test.doc"
  4. for /f "tokens=*" %%i in ("C:\Program Files\WinRAR\Rar.exe") do set "rar=%%~si"
  5. for /f "tokens=*" %%a in ('dir /b/a-d "%ph%\*.rar"') do (
  6.          for /f "tokens=7" %%i in ('%Rar% v "%ph%\%%a"  ^| findstr /ierc:"%file%"') do (
  7.              echo;%%a   CRC32:   %%i
  8.          )
  9. )
复制代码
执行后得到结果:
1.rar   CRC32:   8C91CF13     (这个是目录test\doc\1.doc)
1.rar   CRC32:   C8138FF6    (这个是目录test\doc123\2.doc)

已经能正确得到结果了.
那么如何自动判断,如果CRC等于8C91CF13      就自动更新rar中的test\doc\1.doc文件呢?
其中:test\doc\1.doc这个地址,可以利用for /f "tokens=8" %%i in 来获取.

TOP

返回列表