
У меня есть большое дерево папок. Допустим, есть папки с именами A, B, C и т. д. по Z. Внутри каждой папки находится несколько zip-файлов.
Я могу выбрать все zip-файлы в папке, щелкнуть правой кнопкой мыши, выбрать 7zip и выбрать Extract to "*", и это отлично работает. Например, если я сделаю это с zip-файлами в папке A, A будет содержать папку для каждого zip-файла с содержимым zip-файла внутри.
Я хочу выполнить поиск всех zip-файлов во ВСЕХ папках (AZ) и выполнить эту операцию одновременно, так чтобы в каждой из папок (AZ) появились папки для всех содержащихся в них zip-файлов.
На самом деле 7zip извлекает все в первую попавшуюся папку (например, A).
Кто-нибудь знает, как это сделать?
решение1
Вы можете использовать командную строку Windows. Просто нажмите на логотип Windows, введите cmd
и нажмите ENTER. Затем перейдите в каталог, содержащий подкаталоги с вашими zip-файлами, введя cd c:\my\example\dir
и ENTER, если он находится на другом диске, введите eg i:
и еще раз, ENTERчтобы переключиться на этот диск. Теперь правильный путь будет показан перед курсором. Затем введите
for /F "usebackq" %f in (`dir /b/a:d`) do @echo %f
и ENTER. возвращает одну строку на каталог. Для каждой из этих строк выполняется dir /b/a:d
команда позади . просто выведет найденные имена на экран, так что вы можете безопасно контролировать, что будет выполнено, если вы удалите . В вашем случае вам понадобится что-то вродеdo
@echo %f
@echo
for /F "usebackq" %f in (`dir /b/a:d`) do C:\APPS\7-Zip\7z.exe x .\%f\*.zip -o%f
который для каждого подкаталога вызовет исполняемый файл командной строки 7zip (вам нужно будет настроить путь от C:\APPS\7-Zip\
вашей системы) и извлечет все файлы zip, включая их полный путь, в текущий подкаталог. Более подробную информацию о синтаксисе 7zip можно найти наhttps://www.dotnetperls.com/7-zip-examples
Если вы делаете это снова и снова, вы можете создать простое.летучая мышь/.cmd с вышеупомянутой командой, но вам, скорее всего, придется заменить % на %%, чтобы это заработало.
решение2
Я добился того, что все заработало так, как я хотел. Правильная команда:
for /F "tokens=*" %%g in ('dir /b/a:d') do "C:\Program Files\7-Zip\7z.exe" x ".\%%g\*.zip" -o"%g\*" -aos
решение3
Если вы используете Windows, перейдите в корневую папку с папками A, B, C и D, затем выполните поиск *.zip
или *.rar
в поиске Windows выберите/выделите все zip-файлы и используйте 7-zip, чтобы сделать все, что вам нужно. Должно работать также отлично с dolphin(linux).