我想将所有.zip和.rars提取到一个文件夹及其子文件夹中
结构是这样的:
MAIN_FOLDER
-A folder
- a.zip
-a.rar
-B folder
- b.zip
-b.rar
-C folder
....
...
我已经尝试过了,但是没有用
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.zip) DO (
"C:\Program Files\7-zip\7z.exe" x %%X
)
popd
)
我使用Windows并安装了7-Zip。
附加问题:是否可以将最后一个子目录(a.rar,b.rar)的所有提取文件保存在同一文件夹(主文件夹)中?
for /F %%I IN ('dir /b /s *.zip *.rar') DO (
"C:\Program Files\7-Zip\7z.exe" x -o"%%~dpI" "%%I"
)
for /F %%I IN ('dir /b /s *.zip *.rar') DO (
这将对命令返回的每个文件执行一个循环dir /b /s *.zip *.rar
。该/s
告诉dir
以递归方式进入子目录并/b
以裸格式打印。
文件名存储在%%I
变量中,以备后用。如果在提示符下键入此内容,则应%I
改用。
"C:\Program Files\7-Zip\7z.exe" x -o"%%~dpI" "%%I"
这将执行提取。该参数-o"%%~dpI"
将文件提取到归档文件所在的目录中。其他选项:
-o"%%~dpI"
—提取到存档所在的目录。
-o"%%~dpnI"
—在以归档文件命名的层次结构中创建一个新目录,并将其提取到其中(即AFolder\archive.zip
提取到中AFolder\archive\
)。
-o"%%~nI"
—在以归档文件命名的当前目录中创建一个新目录,并将其提取到其中(即AFolder\archive.zip
提取到中.\archive\
)。
忽略-o
参数—提取到当前目录。
C:\Temp>tree /F
Folder PATH listing
Volume serial number is 08A4-22E0
C:.
│ batch.bat
│
├───AFolder
│ a.zip
│
├───BFolder
│ b.zip
│
└───CFolder
c.zip
C:\Temp>batch.bat > nul
C:\Temp>tree /F
Folder PATH listing
Volume serial number is 08A4-22E0
C:.
│ batch.bat
│
├───AFolder
│ a.zip
│ a.zip.txt
│
├───BFolder
│ b.zip
│ b.zip.txt
│
└───CFolder
c.zip
c.zip.txt
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句