Как я извлекаю все архивы в подкаталогах этой папки?

Самое близкое решение легкого состоит в том, чтобы создать новый пакет. склонный - получают источник источник и заменяют старый восходящий поток tarball контролем. ударьте версию как соответствующую, затем восстановите, установите и надейтесь, что Вы не испортили ничто больше. Обратите внимание, что что-либо, чему была нужна определенная версия библиотеки, будет полито из шланга, и обычно замена чего-то как моно требует восстановления всего, от чего это зависит.

18
задан 13 March 2015 в 20:41
4 ответа

Во-первых, установка, с 7 zip.

Создайте a bat файл в корне каталога, содержащего много подкаталогов с архивами внутри. Затем вставьте следующее в:

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
)

Запустите биту, и весь rar's/zips будет извлечен в папку, в которой они содержатся.

Как это работает?

ДЛЯ/D/r %% F в (" * ") ДЕЛАЮТ (

Чтобы цикл циклично выполнился через все папки в текущем каталоге и поместил путь к переменной %%F.

pushd %CD %

Поместите текущий каталог, что мы находимся в в память.

CD %% F

Установите папку от переменной %%F как текущий каталог.

FOR %%X in (*.rar *.zip) DO (

Для весь rar и zip файлы в текущей папке, сделайте:

"C:\Program Files\7-zip\7z.exe" x "%%X"

Выполненный с 7 zip на файлах. Кавычки необходимы вокруг %%X потому что некоторые имена файлов имеют пробелы в них.

popd

Возвратитесь к предыдущему каталогу, который мы ранее сохранили в памяти.

Надежда это полезно для кого-то.

22
ответ дан 2 December 2019 в 20:24
find . -name "*.zip" |  while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;

Запускает рекурсивный поиск в текущем каталоге, находит все файлы, заканчивающиеся в .zip, затем передает это по каналу в цикл. Для каждого файла это находит, это выполняет разархивировать команду на файле с выводом, шунтируемым к каталогу файла.

1
ответ дан 2 December 2019 в 20:24

У меня возникла проблема с запуском сценария из Windows Vista. Когда я запустил код, ничего не случилось. Мне нужно было быть администратором, чтобы иметь возможность запускать скрипт. Когда я щелкнул правой кнопкой мыши по файлу .bat и «запустил от имени администратора», это не сработало, потому что оно по какой-то причине запускалось в папке system32 (если я правильно помню). Чтобы решить эту проблему, просто используйте переменную среды Windows (объясняется здесь: Переменные среды Windows )% ~ dp0, чтобы вернуться в каталог, из которого был запущен сценарий.

@echo on
cd %~dp0

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
)

Убедитесь, что нет * .rar или * Файлы .zip находятся на том же уровне, что и сценарий. Они должны быть на один уровень ниже.

Надеюсь, этот комментарий кому-то помог.

3
ответ дан 2 December 2019 в 20:24

Приведенные выше ответы работают, однако, если вы используете 64-разрядную версию Windows и 32-разрядную версию 7-Zip , правильный путь - C: \ Program Files (x86) \ 7-Zip для 7-Zip. Ниже приведен сценарий, который у меня сработал.

@echo on
cd %~dp0

FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F
    FOR %%X in (*.rar *.zip) DO (
        "C:\Program Files (x86)\7-zip\7z.exe" x %%X
    )
    popd
)
1
ответ дан 2 December 2019 в 20:24

Теги

Похожие вопросы