在 Windows 中,我想使用某种批处理文件一次解压缩多个目录中的文件。
例如 :
初始目录
--Foo1
----文件1.zip
--Foo2
----Foo2.zip
该脚本将以 Foo 作为初始目录运行并搜索可用的子目录并提取这些目录上的所有文件。
答案1
您需要FOR
带有/R
参数的命令:
FOR /R [[drive:]path] %variable IN (设置) DO 命令 [命令参数] 遍历以 [drive:]path 为根的目录树,执行 FOR 在每个目录中声明。如果没有目录 在 /R 之后指定规范,则当前目录为 假设。如果 set 只是一个句点 (.) 字符,那么它 将仅枚举目录树。
help for
在命令提示符下输入以获取有关使用的完整详细信息。
请记住,如果在脚本中使用变量,则需要使用%%
而不是%
。
答案2
以下是我的做法:
@setlocal
@echo off
set path="C:\Program Files\WinRAR\";%path%
for /F %%i in ('dir /s/b *.rar') do call :do_extract "%%i"
goto :eof
:do_extract
echo %1
mkdir %~1.extracted
pushd %~1.extracted
unrar e %1
popd
答案3
您可以使用 powershell (v3+):
cd "Foo1";dir *.zip -rec|%{eXpand-archive "$($_.fullname)" -des "$($_.parent)\"}