找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29190|回复: 5

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

[复制链接]
发表于 2019-11-27 21:50:09 | 显示全部楼层 |阅读模式
在"材料"的文件夹中..有一堆rar文件..很多rar压缩文件里面有个旧的文档,名为:test.doc   .crc32值为xxxxxxxx
如何使用批处理,把存在:test.doc,且crc32值为xxxxxxxx压缩包查找出来.并且把目录下的new.doc 更新进去到test.doc?
发表于 2019-11-29 12:46:04 | 显示全部楼层
数据正确的话 再添加一条压缩命令即可
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
复制代码
 楼主| 发表于 2019-11-30 04:26:17 | 显示全部楼层
回复 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中的文件呢?
发表于 2019-11-30 15:21:39 | 显示全部楼层
回复 3# Lundy


    这个代码的第一行删掉再执行一遍看看是否有线索
发表于 2019-11-30 18:56:29 | 显示全部楼层
回复 3# Lundy
添加下面代码执行看什么结果
  1. %Rar% v  *.rar %file% | findstr /ierc:"  %file%
复制代码
 楼主| 发表于 2019-11-30 23:33:15 | 显示全部楼层
回复 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 来获取.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 13:10 , Processed in 0.018237 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表