Распаковка всех.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", сохраняя при этом внутреннюю файловую структуру, так что в итоге мы получим следующее:
-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 ответ
FOR
Команда поддерживает некоторые магические символы, которые извлекают части переменной %%I. использование FOR /?
за помощью.
В вашем случае это может сработать: mkdir "C:\Users\Ed\Desktop\output\%%~dI%%~pI"