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

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



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

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


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


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


显然, 最理想是第一种

本帖最后由 娜美 于 2021-12-13 09:08 编辑

回复 11# 小小菜鸟


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

只要有压缩包 就自动循环解压   直到所有完成

TOP

回复 10# 娜美


    以编辑

TOP

https://wwe.lanzouo.com/b01ow4mhg
密码:dyj4

我把测试用的文件夹,  和解压后得到正确的的文件数目都放在B文件夹做示例了了,   
下来一看应该会明白的

TOP

本帖最后由 娜美 于 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
复制代码

TOP

7Zip不是吊打RAR吗

TOP

本帖最后由 娜美 于 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

TOP

本帖最后由 小小菜鸟 于 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. )
复制代码

TOP

本帖最后由 娜美 于 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

TOP

不创建目录把x改成e
递增重命名把-aoa改成-aou
然后还有压缩文件就是继续遍历

TOP

本帖最后由 娜美 于 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目录下,  遇相同名称的自动递增

TOP

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

TOP

返回列表