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

[文件操作] 求助批处理解压文件到指定文件夹 ( 注意是仅文件 )

[复制链接]
发表于 2021-12-10 11:08:45 | 显示全部楼层 |阅读模式


将 for  %%a in (*.rar *.zip *.7z) do 解压文件到指定文件夹 ( 注意是仅里面文件 )

D:\A有一个压缩包, 压缩着几个主目录文件夹及包含未经压缩文件,压缩也有很多子文件夹及包含未经压缩文件,  子文件夹下也有各种文件类型压缩包及包含未经压缩文件,  现在需要把所有文件解压到D:\B去 , 注意是将里面所有文件解压到D:\B, 不是文件夹 (即将压缩包里面所有各种各样文件释放到D:\B),   遇相同名称自动递增


1  这种情况可以直接进行解压就能达到需求吗 ?


2   还是要先进行解压后, 再进行将文件进行移动D:\B ?


显然, 最理想是第一种
发表于 2021-12-10 11:34:51 | 显示全部楼层
  1. for /r %%i in (*.rar *.zip *.7z)do "C:\Program Files\7-Zip\7z.exe" x "%%i" -o"D:\B" -aoa
复制代码
 楼主| 发表于 2021-12-10 19:30:32 | 显示全部楼层
本帖最后由 娜美 于 2021-12-10 19:36 编辑

回复 2# smss



  1. for /r %%i in (*.rar *.zip *.7z) do "C:\Winrar.exe" x "%%i" -o "D:\B" -aoa
复制代码

   Sorry 由于下午突然忙,  使用Winrar 刚做了测试, 似乎只能将文件夹解压出到D:\B   并没有将文件夹里面的所有文件解压释放出D:\B目录下,    解压后的文件不需要在各个文件夹里面,  只需要全部放在D:\B目录下,  遇相同名称的自动递增
发表于 2021-12-11 15:31:52 | 显示全部楼层
不创建目录把x改成e
递增重命名把-aoa改成-aou
然后还有压缩文件就是继续遍历
 楼主| 发表于 2021-12-11 19:51:24 | 显示全部楼层
本帖最后由 娜美 于 2021-12-11 20:00 编辑

回复 4# 小小菜鸟

  1. for /r %%i in (*.rar *.zip *.7z) do "C:\WinRar.exe" e "%%i" -o "D:\B" -aou
复制代码

   根据您的提示  刚试了一下  目前似乎可以把里面未经压缩文件全部释放到D:\B  但是如果压缩包里面也有压缩包情况,  并不能将压缩包里面文件解压释放到D:\B    它只释放了压缩包到D:\B ,  并没把压缩包里面的压缩包文件解压到D:\B
发表于 2021-12-12 01:19:00 | 显示全部楼层
本帖最后由 小小菜鸟 于 2021-12-13 00:35 编辑
  1. for /r %%i in (*.rar *.zip *.7z) do (
  2.   "C:\WinRar.exe" e "%%i" -o "D:\B" -aou
  3.   pushd "D:\B"
  4.   for %%j in (*.rar *.zip *.7z) do (
  5.     "C:\WinRar.exe" e "%%j" -o "D:\B" -aou
  6.     del "%%j"
  7.   )
  8.   popd
  9. )
复制代码
 楼主| 发表于 2021-12-12 09:51:56 | 显示全部楼层
本帖最后由 娜美 于 2021-12-12 11:46 编辑

回复 6# 小小菜鸟

  1. for /r %%i in (*.rar *.zip *.7z) do (
  2. "C:\WinRAR5.71.exe" e  "%%i" "D:\B" -or"
  3. for %%j in ("D:\B\*") do (
  4. if "%%~xj" == ".rar" (
  5. call :extract "%%j"
  6. ) else if "%%~xj" == ".zip" (
  7. call :extract "%%j"
  8. ) else if "%%~xj" == ".7z" (
  9. call :extract "%%j"
  10.    )
  11. )
  12. )
  13. :extract
复制代码


   我使用的是rar5.71版本,,  根据您上面代码 改了aou  为-or 默认遇相同名称的自动递增    不知道为什么   还是不能直接把压缩包里面的深层的压缩包文件解压释放到D:\B   它只将压缩包释出D:\B
发表于 2021-12-12 13:38:55 | 显示全部楼层
7Zip不是吊打RAR吗
 楼主| 发表于 2021-12-12 16:14:53 | 显示全部楼层
本帖最后由 娜美 于 2021-12-12 16:35 编辑
7Zip不是吊打RAR吗
smss 发表于 2021-12-12 13:38



   smss哥 我也试了你写的     但是没法把压缩包里面的子文件夹中压缩包再次解压   似乎它把压缩包里面的压缩包释放出D:\B就算了, 并没有将压缩包里面的子文件夹中压缩包再次解压出文件放到D:\B
  1. for /r %%i in (*.rar *.zip *.7z)do "C:\Program Files\7-Zip\7z.exe" e "%%i" -o"D:\B" -aou
复制代码
 楼主| 发表于 2021-12-12 16:46:45 | 显示全部楼层
https://wwe.lanzouo.com/b01ow4mhg
密码:dyj4

我把测试用的文件夹,  和解压后得到正确的的文件数目都放在B文件夹做示例了了,   
下来一看应该会明白的
发表于 2021-12-13 00:11:04 | 显示全部楼层
回复 10# 娜美


    以编辑
 楼主| 发表于 2021-12-13 09:03:49 | 显示全部楼层
本帖最后由 娜美 于 2021-12-13 09:08 编辑

回复 11# 小小菜鸟


   试了目前可以应付一些简单情况 Thanks   如果还有一种更复杂情况   压缩包里面深层文件夹里的文件再一次缩   再又将子文件夹缩的情况 似乎对付不了这种

只要有压缩包 就自动循环解压   直到所有完成
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 17:56 , Processed in 0.032920 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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