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

[其他] 批处理怎样解压一个文件以后删除这个文件的压缩包?

  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
复制代码
上述代码只能执行解压所有的文件后才能一次性删除所有压缩包,因磁盘空间不够,能不能改一下代码使得每解压一个文件以后删除这个文件的压缩包或者分卷压缩包

code1


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



    运行成功,感谢大佬

TOP

本帖最后由 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
复制代码
bat小白,请多指教!谢谢!

TOP

回复 6# bluesky123


    建议先升级到最新版本试试
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复  bluesky123


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



    RAR 5.91 x64    版权所有 (C) 1993-2020 Alexander Roshal    25 六月 2020

TOP

回复 1# bluesky123


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

C:\>"C:\Program Files\WinRAR\rar.exe" | findstr /b "RAR"
RAR 6.24 x64   版权所有 (c) 1993-2023 Alexander Roshal   3 十月 2023
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# Five66 问题不支持分卷压缩包啊,只能删除part1.rar

TOP

用真正的命令行程序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
复制代码

TOP

回复 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
复制代码
测试代码之前请做好备份

TOP

返回列表