J'ai un fichier de commandes qui renomme des fichiers.
Est-il possible de renommer des fichiers dans un fichier ZIP? Sinon, est-il possible de les "extraire" en arrière-plan, de les renommer et de les "rajouter" dans la même archive ZIP?
batch-file
MaKu
la source
la source
Réponses:
Vous pouvez utiliser la version en ligne de commande de 7-zip
Par exemple:
e
signifie extraire,-o
est le répertoire de sortie.Ensuite, vous
ren
les fichiers à l'intérieur (en utilisant tout ce que vous avez dans votre script de lot à partir de maintenant).Enfin, nous
a
intégrons tous les*
fichiers ( )C:\Temporary\Dir
dans le même dossierarchive.zip
, mais comme ils existent, nous aimerions écraser tous (-aoa
) et nous assurer que nous sommes d’accord (-y
) avec les invites (si elles apparaissent).Oh, et parce que nous aimons le rendre propre, nous nous
-sdel
assurons que tous les fichiers ajoutés à l’archive sont supprimés.la source
Le format ZIP stocke les métadonnées et les données séparément pour chaque entrée. Ainsi, cela vous permettrait de parcourir les entrées et de changer le nom de l'entrée à la volée sans décompresser / compresser les données, de manière efficace en continu, en mémoire et sur disque.
Je ne connais pas d'outil le proposant tel quel, il vous faudrait donc utiliser une bibliothèque telle que libzip et le lier avec votre langue préférée.
Donc, si vos archives zip sont petites et que vous n'effectuez pas cette tâche encore et encore, vous devez vous en tenir à un processus d'extraction / renommer / archiver.
la source
Il est un peu tard, mais comme cela a fonctionné pour moi, je vais partager mes découvertes avec:
http://www.info-zip.org/FAQ.html#rename
Fondamentalement, vous devez utiliser l'utilitaire zipnote.
Il va toujours réécrire le fichier entier, mais une étape plus courte que extraire le fichier, renommer, supprimer le fichier de zip, ajouter un fichier renommé en arrière.
la source
"@ name"
et"@=newname"
?Vous pouvez extraire -> renommer -> compresser comme suggéré ci-dessus, ou éditer les données hexadécimales du zip afin de changer les noms à l'intérieur du fichier.
Un exemple: eg1
Évidemment, c'est beaucoup plus difficile à faire avec batch que d'extraire, de renommer et de compresser, mais si vous devez le renommer alors qu'il est toujours dans le zip, c'est possible, car le nom réel du fichier existe dans le fichier .zip, vous pouvez également convertir le nom d'origine en hexadécimal, rechercher ce tableau hexadécimal dans le fichier et le remplacer par un nouveau.
la source