Board logo

标题: [其他] 批处理怎样解压一个文件以后删除这个文件的压缩包? [打印本页]

作者: bluesky123    时间: 2023-11-28 19:18     标题: 批处理怎样解压一个文件以后删除这个文件的压缩包?

  1. @echo off
  2. chcp 65001
  3. set rar="C:\Program Files\WinRAR\WinRAR.exe"
  4. for /f "delims=" %%a in ('dir  /a-d /s /b *.rar') do (
  5.         %rar%  x -y -pword "%%a" "%%~dpa" && (
  6.                 set #"%%a"=1
  7.         )
  8. )
  9. for /f tokens^=2delims^=^" %%a in ('set #') do  del "%%a"
  10. pause
复制代码
上述代码只能执行解压所有的文件后才能一次性删除所有压缩包,因磁盘空间不够,能不能改一下代码使得每解压一个文件以后删除这个文件的压缩包或者分卷压缩包
作者: ShowCode    时间: 2023-11-28 22:03

回复 1# bluesky123


试试这样
  1. @echo off
  2. chcp 65001 >nul
  3. set rar="C:\Program Files\WinRAR\WinRAR.exe"
  4. for /f "delims=" %%a in ('dir /b /s /a-d *.rar') do (
  5.     %rar% x -ibck -y -pword "%%a" "%%~dpa"
  6.     if not errorlevel 1 (
  7.         del /f /q "%%a"
  8.     )
  9. )
  10. pause
复制代码
或者这样
  1. @echo off
  2. chcp 65001 >nul
  3. set rar="C:\Program Files\WinRAR\WinRAR.exe"
  4. for /f "delims=" %%a in ('dir /b /s /a-d *.rar') do (
  5.     %rar% x -ibck -y -pword "%%a" "%%~dpa" && del /f /q "%%a"
  6. )
  7. pause
复制代码

作者: Five66    时间: 2023-11-29 04:18

用真正的命令行程序rar.exe(好像仅支持rar格式)
  1. @echo off
  2. chcp 65001
  3. set rar="C:\Program Files\WinRAR\Rar.exe"
  4. for /f "eol=/ delims=" %%a in ('dir  /a-d /s /b *.rar') do (
  5.         %rar%  x -y -pword "%%a" "%%~dpa" && del "%%a"
  6. )
  7. pause
复制代码

作者: bluesky123    时间: 2023-11-29 09:41

回复 3# Five66 问题不支持分卷压缩包啊,只能删除part1.rar
作者: Batcher    时间: 2023-11-29 10:00

回复 1# bluesky123


请把你的WinRAR版本信息发出来看看

C:\>"C:\Program Files\WinRAR\rar.exe" | findstr /b "RAR"
RAR 6.24 x64   版权所有 (c) 1993-2023 Alexander Roshal   3 十月 2023

作者: bluesky123    时间: 2023-11-29 10:18

回复  bluesky123


请把你的WinRAR版本信息发出来看看
Batcher 发表于 2023-11-29 10:00



    RAR 5.91 x64    版权所有 (C) 1993-2020 Alexander Roshal    25 六月 2020
作者: Batcher    时间: 2023-11-29 10:37

回复 6# bluesky123


    建议先升级到最新版本试试
作者: 77七    时间: 2023-11-29 12:03

本帖最后由 77七 于 2023-11-29 12:04 编辑

code1
  1. @echo off
  2. chcp 65001 >nul
  3. cd /d "%~dp0"
  4. for /f "delims=" %%i in ('dir /b /s /a-d *.rar *.zip ^|sort') do (
  5.         set folder=%%~dpi
  6.         set file=%%i
  7.         setlocal enabledelayedexpansion
  8.         "C:\Program Files\WinRAR\WinRAR.exe" x -y "!file!" "!folder!"
  9.         if !errorlevel! equ 0 (
  10.                 del "!file!"
  11.         ) else if !errorlevel! equ 6 (
  12.                 del "!file!"
  13.         )
  14.         endlocal
  15. )
  16. pause
复制代码



code2
  1. @echo off
  2. chcp 65001 >nul
  3. for /f "delims=" %%i in ('dir /b /s /a-d *.rar *.zip ^|sort') do (
  4. if exist "%%i" (
  5. "C:\Program Files\WinRAR\WinRAR.exe" x -y "%%i" "%%~dpi" && (
  6. del "%%i"
  7. for /f "delims=" %%j in ("%%~ni") do (
  8. del "%%~dpi%%~nj.part*%%~xi" 2>nul
  9. )
  10. )
  11. )
  12. )
  13. pause
复制代码

作者: bluesky123    时间: 2023-11-29 13:19

code1


code2
77七 发表于 2023-11-29 12:03



    运行成功,感谢大佬




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