标题: [文件操作] 求助批处理解压文件到指定文件夹 ( 注意是仅文件 ) [打印本页]
作者: 娜美 时间: 2021-12-10 11:08 标题: 求助批处理解压文件到指定文件夹 ( 注意是仅文件 )
将 for %%a in (*.rar *.zip *.7z) do 解压文件到指定文件夹 ( 注意是仅里面文件 )
D:\A有一个压缩包, 压缩着几个主目录文件夹及包含未经压缩文件,压缩也有很多子文件夹及包含未经压缩文件, 子文件夹下也有各种文件类型压缩包及包含未经压缩文件, 现在需要把所有文件解压到D:\B去 , 注意是将里面所有文件解压到D:\B, 不是文件夹 (即将压缩包里面所有各种各样文件释放到D:\B), 遇相同名称自动递增
1 这种情况可以直接进行解压就能达到需求吗 ?
2 还是要先进行解压后, 再进行将文件进行移动D:\B ?
显然, 最理想是第一种
作者: smss 时间: 2021-12-10 11:34
- 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
本帖最后由 娜美 于 2021-12-10 19:36 编辑
回复 2# smss
- 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
不创建目录把x改成e
递增重命名把-aoa改成-aou
然后还有压缩文件就是继续遍历
作者: 娜美 时间: 2021-12-11 19:51
本帖最后由 娜美 于 2021-12-11 20:00 编辑
回复 4# 小小菜鸟
- 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
本帖最后由 小小菜鸟 于 2021-12-13 00:35 编辑
- for /r %%i in (*.rar *.zip *.7z) do (
- "C:\WinRar.exe" e "%%i" -o "D:\B" -aou
- pushd "D:\B"
- for %%j in (*.rar *.zip *.7z) do (
- "C:\WinRar.exe" e "%%j" -o "D:\B" -aou
- del "%%j"
- )
- popd
- )
复制代码
作者: 娜美 时间: 2021-12-12 09:51
本帖最后由 娜美 于 2021-12-12 11:46 编辑
回复 6# 小小菜鸟
- for /r %%i in (*.rar *.zip *.7z) do (
- "C:\WinRAR5.71.exe" e "%%i" "D:\B" -or"
- for %%j in ("D:\B\*") do (
- if "%%~xj" == ".rar" (
- call :extract "%%j"
- ) else if "%%~xj" == ".zip" (
- call :extract "%%j"
- ) else if "%%~xj" == ".7z" (
- call :extract "%%j"
- )
- )
- )
- :extract
复制代码
我使用的是rar5.71版本,, 根据您上面代码 改了aou 为-or 默认遇相同名称的自动递增 不知道为什么 还是不能直接把压缩包里面的深层的压缩包文件解压释放到D:\B 它只将压缩包释出D:\B
作者: smss 时间: 2021-12-12 13:38
7Zip不是吊打RAR吗
作者: 娜美 时间: 2021-12-12 16:14
本帖最后由 娜美 于 2021-12-12 16:35 编辑
7Zip不是吊打RAR吗
smss 发表于 2021-12-12 13:38
smss哥 我也试了你写的 但是没法把压缩包里面的子文件夹中压缩包再次解压 似乎它把压缩包里面的压缩包释放出D:\B就算了, 并没有将压缩包里面的子文件夹中压缩包再次解压出文件放到D:\B- 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
https://wwe.lanzouo.com/b01ow4mhg
密码:dyj4
我把测试用的文件夹, 和解压后得到正确的的文件数目都放在B文件夹做示例了了,
下来一看应该会明白的
作者: 小小菜鸟 时间: 2021-12-13 00:11
回复 10# 娜美
以编辑
作者: 娜美 时间: 2021-12-13 09:03
本帖最后由 娜美 于 2021-12-13 09:08 编辑
回复 11# 小小菜鸟
试了目前可以应付一些简单情况 Thanks 如果还有一种更复杂情况 压缩包里面深层文件夹里的文件再一次压缩 再又将子文件夹压缩的情况 似乎对付不了这种
只要有压缩包 就自动循环解压 直到所有完成
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |