temps il y a je demande de l'aide pour développer un fichier batch court pour compresser les fichiers à l'intérieur d'un arbre à l'aide 7zip, voir le lien suivant:Sauter dans un « FOR » boucle dans un fichier batch
Compress separately files within subfolders
Maintenant, je vouloir éviter les fichiers déjà compressés (.7z, fichiers .zip) et passer à l'élément suivant.
Je souhaite également supprimer les fichiers compressés précédents (tels que '.7z.7z' ou ' .zip.7z') créés en utilisant plusieurs fois le fichier de commandes d'origine dans un même dossier.
C'est ce que je suis arrivé à ce jour:
@echo off
cd /d %~dp0
rem 7z.exe path
set sevenzip=
if "%sevenzip%"=="" if exist "%ProgramFiles(x86)%\7-zip\7z.exe" set sevenzip=%ProgramFiles(x86)%\7-zip\7z.exe
if "%sevenzip%"=="" if exist "%ProgramFiles%\7-zip\7z.exe" set sevenzip=%ProgramFiles%\7-zip\7z.exe
if "%sevenzip%"=="" echo 7-zip not found&pause&exit
@echo searching...
for /R %%I in (*) do (
if not exist %%I.zip if not exist %%I.7zip "%sevenzip%" a -mx -mmt4 "%%I.7z" -r -x!*.bat "%%I" && "%sevenzip%" t "%%I.7z" * -r
)
del "Compressing_files_7zip.bat.7z"
del *.7z.7z*
del *.zip.7z*
::::::::::::::::::::::::::For setting up shutdown 60' after the end of the process.Remove colons in the line below.
::shutdown.exe /s /t 3600
pause
Les principales questions que je reçois avec ce code sont les suivants:
-Je suis incapable de détecter les fichiers déjà compressés et donc passer à la suivante% % I entité.
-Retirez les fichiers non compressés indésirables des sous-dossiers. De toute évidence, le caractère générique '*' ne fonctionne pas dans la boucle; Par contre, si je cherche 'del %% I.7z.7z' ça ne marche pas non plus. J'ai lu que je ne peux pas utiliser une fonction correcte 'OU' pour les boucles 'if', c'est pourquoi je les ai imbriquées.
Merci à l'avance.
Alex.
Merci Magoo. Le code ignore les fichiers compressés mais aussi les fichiers à double extension (il peut y avoir de tels fichiers). De plus, je suppose que selon la syntaxe que je propose, les fichiers zippés ne sont plus créés sur le dossier source au lieu qu'ils apparaissent là où je place le fichier batch. Répondre à votre question: Parce que cela compresserait à nouveau les fichiers volumineux qui n'ont pas changé (s'il y a un changement, il deviendrait 'v2' ou plus) et ce n'est pas souhaitable. –
Laissez-moi vous suggérer de citer comme si «n'existe pas» %% ~ nI.zip «si n'existe pas» %% ~ nI.7z "' ... – aschipfl
@aschipfl TY mais je ne l'ai pas fait fonctionner. Quoi qu'il en soit, je dois travailler sur le nom du fichier et m'assurer que la compression se produit dans le dossier source. –