7Zip récursif décompressez et renommez les sous-répertoires


1

J'ai un répertoire racine avec de nombreux sous-répertoires différents contenant des fichiers .zip (exemple ci-dessous). J'ai besoin d'un lot / .cmd / etc pour décompresser les fichiers zip dans leurs sous-répertoires et renommer le fichier extrait (un fichier .tif) de la même manière que le fichier zip. J'ai fait des recherches et trouvé le code suivant, mais cela ne fonctionnera que s'il est placé dans les sous-répertoires. Pas le dossier parent. Comment faire en sorte que ce code fonctionne dans tous les sous-répertoires, comme expliqué?

Exemple de structure de fichier

C: \ This \ Is \ Random \ Parent \ Sub \ Sub \ 1234.zip {ABCD.tif}

Ce que je recherche C: \ This \ Is \ Random \ Parent \ Sub \ Sub \ 1234.tif

set work=%temp%\%random%%random%%random%%random%
mkdir "%work%" || goto :eof

for %%A in ('dir /b /s *.zip *.rar') do (
"%ProgramFiles%\7-Zip\7z.exe" e -o"%work%" "%%~A"
for %%F in ("%work%\*") do move "%%~F" "%%~nA%%~xF"
)

rmdir "%work%"

Réponses:


1

J'ai pu apporter les modifications suivantes pour réaliser ce que je cherchais

set work=%temp%\%random%%random%%random%%random%
mkdir "%work%" || goto :eof

for /F %%I IN ('dir /b /s *.zip *.rar') do (
"%ProgramFiles%\7-Zip\7z.exe" x -o"%work%" "%%~I"
for %%F in ("%work%\*") do move "%%~F" "%%~nI%%~xF"
)

rmdir "%work%"

Le seul problème maintenant est que ".zip" est inclus dans le nom du fichier .tif extrait. Aider à résoudre cela serait apprécié


J'ai posté une version antérieure du code. Le "A" est remplacé par "I" dans la seconde boucle sous la forme "%% - nI %% ~ xF", ce qui permet au tif de se décompresser dans le répertoire parent avec l'extension correcte, à savoir .tif. "%% I %% xF" les extrait dans les sous-dossiers corrects mais apporte l'extension .zip.tif.
gdink1020

Cela les enregistre correctement en tant qu'extension .tif, mais ne conserve pas la structure de fichier et les décompresse tous dans le répertoire parent
gdink1020

En remplaçant "%% ~ FnI.tif" par "%% ~ nI %% ~ xf" dans le code d'origine, le résultat est que le fichier .tif est extrait dans le bon sous-dossier avec l'extension de fichier .zip.tif.
gdink1020

J'ai couru le code exactement comment vous l'avez dans le dernier lien . Il s'est exécuté et n'a pas déplacé le fichier extrait dans le bon dossier. il y avait et erreur. (attaché) link
gdink1020

J'ai couru la dernière version que vous avez suggérée; encore une fois c'est donner l' The system cannot find the file specified.erreur. Pour clarifier les normes, les données proviennent d’un site Web, j’ai écrit un texte en python téléchargeant les fichiers .zip (plus de 500 000 fichiers .zip). Le script python crée des répertoires basés sur l’enquête sur les terres publiques, d’abord par canton, puis de sections où il pourrait y avoir plusieurs fichiers .zip uniques. ex.) C:\\data\Township\Section\ABC.zip. Dans le fichier .zip, il y a 1 fichier tif nommé. 1234.tif Le fichier doit être extrait dans le dossier de section approprié portant le nomABC.tif
gdink1020
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.