标题: [其他] BAT批量解压分卷压缩文件之后如何将多个分卷压缩全部删除? [打印本页]
作者: bluesky123 时间: 2023-4-16 01:11 标题: BAT批量解压分卷压缩文件之后如何将多个分卷压缩全部删除?
写了个批处理解压完成之后并自动删除压缩包,但是发现只能删除xxx.part1.rar, xxx.part2.rar xxx.part3.rar …分卷压缩包删不了,怎么解决呢
作者: 77七 时间: 2023-4-16 02:04
举个例子吧,并贴一下代码,看看哪些可以删除,哪些没有删除。
作者: bluesky123 时间: 2023-4-16 13:50
本帖最后由 bluesky123 于 2023-4-16 13:53 编辑
举个例子吧,并贴一下代码,看看哪些可以删除,哪些没有删除。
77七 发表于 2023-4-16 02:04
- @echo off
- chcp 65001
- set rar="C:\Program Files\WinRAR\WinRAR.exe"
- for /f "delims=" %%a in ('dir /a-d /s /b *.rar') do %rar% x -y "%%a" "%%~dpa" && del "%%a"
- pause
复制代码
我批量解压 分卷压缩包,好比一个文件压缩以后生成了三个分卷压缩包:测试.part1.rar 测试.part2.rar 测试.part3.rar 然后我需要用批处理命令进行解压,执行完以后只有 测试.part1.rar 这个压缩包删了,剩下的两个分卷压缩包 测试.part2.rar 测试.part3.rar没有删除。 当然如果文件不是分卷压缩包就不存在这个问题。你只需要给我改这段代码。复制代码
作者: 77七 时间: 2023-4-16 16:23
回复 3# bluesky123
- @echo off
- chcp 65001
- set rar="C:\Program Files\WinRAR\WinRAR.exe"
- for /f "delims=" %%a in ('dir /a-d /s /b *.rar') do %rar% x -y "%%a" "%%~dpa" && set #"%%a"=1
- for /f tokens^=2delims^=^" %%a in ('set #') do del "%%a"
- pause
复制代码
作者: bluesky123 时间: 2023-4-25 20:16
回复 4# 77七
兄弟,前几天测试了,失败
你看能不能自己做个分卷压缩包测试一下
作者: 77七 时间: 2023-4-25 20:56
回复 5# bluesky123
- @echo off
- chcp 65001
- set rar="C:\Program Files\WinRAR\WinRAR.exe"
- for /f "delims=" %%a in ('dir /a-d /s /b *.rar') do (
- echo %rar% x -y "%%a" "%%~dpa"
- %rar% x -y "%%a" "%%~dpa" && (
- set #"%%a"=1
- echo set #"%%a"=1
- )
- )
- for /f tokens^=2delims^=^" %%a in ('set #') do echo del "%%a"
- pause
复制代码
用这个代码执行,把屏显信息发上来看看
作者: bluesky123 时间: 2023-4-25 21:56
回复 6# 77七
[img][/img]
失败了
作者: 77七 时间: 2023-4-25 22:12
回复 7# bluesky123
https://www.winrar.com.cn/下载最新版试试,猜测你的winrar软件有问题。
作者: 77七 时间: 2023-8-24 14:29
本帖最后由 77七 于 2023-8-24 14:36 编辑
4楼的代码,我这里测试是没问题的。
查看winrar帮助文件,利用退出码再写一个,正好也解决4楼反复解压覆盖的问题。- @echo off
- rem 批处理保存为ansi编码格式,仅测试rar.exe。
- rem 解压当前目录及子目录中的rar、zip文件(包括分卷),解压后删除源文件
- rem 兼容含特殊字符密码 (参考:http://www.bathome.net/redirect.php?goto=findpost&ptid=66456&pid=270314)
- del log.txt 2>nul
- for /f "delims=" %%i in ('dir /b /s /a-d *.rar *.zip ^|sort') do (
- for /f "useback skip=27 delims=" %%a in ("%~f0") do (
- if exist "%%i" (
- set "file=%%i"
- set "pwd=%%a"
- setlocal enabledelayedexpansion
- set "pwd=!pwd:"=""!"
- rar x "!file!" -hp"!pwd!"
- if "!errorlevel!" equ "0" (
- del "!file!"
- ) else if "!errorlevel!" equ "6" (
- del "!file!"
- )
- endlocal
- )
- )
- if exist "%%i" (
- >>log.txt echo %%i
- )
- )
- pause & exit
- rem 以下存放密码
- 2
- 123
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |