解压缩目录中的所有.bz2存档

时间:2018-03-10 07:08:57

标签: batch-file zip winrar bz2

我有一个名为"输入"的目录。充满了包含许多bz2档案的子目录。像这样:

-input
--folder1
---archive1.bz2
----archive1.content
---archive2.bz2
----archive2.content
---archive3.bz2
----archive3.content
--folder2
---archive4.bz2
----archive4.content
---archive5.bz2
----archive5.content
---archive6.bz2
----archive6.content

我正在尝试编写一个Windows批处理脚本,以将每个存档的内容提取到一个新的"输出"文件夹,同时保留内部文件结构,以便我们最终得到:

-output
--folder1
---archive1.content
---archive2.content
---archive3.content
--folder2
---archive4.content
---archive5.content
---archive6.content

到目前为止,我有这个脚本:

for /R "C:\Users\Ed\Desktop\input" %%I in ("*.bz2") do (

  "%ProgramFiles%\WinRAR\WinRAR.exe" x "%%I" *.* "C:\Users\Ed\Desktop\output"
)

提取有效,但不会将内容打包到其folder1,folder2等中。

我觉得我需要为每个存档的父文件夹创建新文件夹,然后将其设置为输出目录。像这样:

for /R "C:\Users\Ed\Desktop\input" %%I in ("*.bz2") do (
    mkdir "C:\Users\Ed\Desktop\output\parent folder of %%I"
    "%ProgramFiles%\WinRAR\WinRAR.exe" x "%%I" *.* "C:\Users\Ed\Desktop\output\parent folder of %%I"
)

但是如何处理父文件夹名称?

1 个答案:

答案 0 :(得分:0)

FOR命令支持一些魔术字符,它们提取变量%% I的部分内容。 使用FOR /?获取帮助。

在您的情况下,这可能有效:    mkdir "C:\Users\Ed\Desktop\output\%%~dI%%~pI"