Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
890 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Decompresser automatiquement les fichiers qui l'ont pas déjà été

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Decompresser automatiquement les fichiers qui l'ont pas déjà été

n°1823947
PsYKrO_Fre​d
Posté le 09-12-2008 à 08:42:31  profilanswer
 

Bonjour,
 
Je veux pouvoir dézipper des fichiers rar automatiquement d'un repertoire...(ca c'est bon)
 
Maintenant j'essaye dézipper uniquement les fichiers rar que je n'ai jamais dézipper...
 
Voici mon code en bacth
 

Code :
  1. @REM ------- BEGIN demo.cmd ----------------
  2. @setlocal
  3. @echo off
  4. set path="C:\Program Files\WinRAR\";%path%
  5. for /F %%i in ('dir /s/b *.tar.Z') do call :do_extract "%%i"
  6. goto :eof
  7. :do_extract
  8. echo %1
  9. IF EXIST %~1.extracted GOTO EXTRACT
  10. mkdir %~1.extracted
  11. pushd %~1.extracted
  12. winrar x -y -x@E:\Ftp\liste.txt  %1
  13. popd
  14. @goto END
  15. :EXTRACT
  16. pushd %~1.extracted
  17. winrar x -y -x@E:\Ftp\liste.txt  %1
  18. popd
  19. @goto END
  20. :END
  21. echo %1 >> E:\ftp\liste.txt
  22. @cls
  23. REM ------- END demo.cmd ------------------


 
 
Le -x@E:\Ftp\liste.txt me sert pour lui dire de ne pas dézipper les fichiers dans cette liste....mais l'option qui m'interresse est :
 
 ta<date>  
 
mais je n'arrive pas à la faire fonctionner à la "main"
 
 
Voici l'help de winrar :
 

Citation :


Utilisation: unrar <commande> -<option 1> -<option N> <archive> <fichiers...>
               <@listefichiers...> <chemin…extraire\>
 
<Commandes>
  e             Extraire les fichiers dans le dossier courant
  l[t,b]        Lister l'archive [technique, brut]
  p             Imprimer le fichier par la sortie standard
  t             Tester les fichiers de l'archive
  v[t,b]        Lister l'archive [technique, brut]
  x             Extraire les fichiers avec le chemin complet
 
<Options>
  -             D‚sactiver les options d'analyse
  ac            Effacer l'attribut Archive aprŠs la compression ou l'extration
  ad            Ajouter le nom de l'archive au chemin de destination
  ap<chemin>    Configurer le chemin … l'int‚rieur de l'archive
  av-           D‚sactiver le test de la v‚rification d'authenticit‚
  c-            D‚sactiver l'affichage des commentaires
  cfg-          D‚sactiver la lecture de la configuration
  cl            Convertir les noms en minuscules
  cu            Convertir les noms en majuscules
  dh            Ouvrir les fichiers partag‚s
  ep            Exclure les noms des chemins
  ep3           D‚velopper les chemins complets avec la lettre de l'unit‚
  f             Mettre … jour les fichiers
  id[c,d,p,q]   D‚sactiver les messages
  ierr          Envoyer tous les messages par la sortie des erreurs standards
  inul          D‚sactiver tous les messages
  ioff          Arrˆter le PC aprŠs l'ex‚cution complŠte d'une op‚ration
  kb            Garder les fichiers extraits endommag‚s
  n<file>       Inclure uniquement le fichier sp‚cifi‚
  n@            Lire les noms de fichier … partir du flux d'entr‚e (stdin)
  n@<list>      Inclure les fichiers en utilisant la liste de fichiers sp‚cifi‚e
  o+            R‚‚crire sur les fichiers existants
  o-            Ne pas r‚‚crire sur les fichiers existants
  oc            Placer l'attribut de compression NTFS
  or            Renommer les fichiers automatiquement
  ow            Sauvegarder ou restaurer le propri‚taire et le groupe du fichier
  p[motdepasse] Configurer le mot de passe
  p-            Ne pas demander le mot de passe
  r             Sous-dossiers r‚currents
  ri<P>[:<S>]   Configurer la priorit‚ (0-d‚faut,1-min..15-max) et le temps d'attente en ms
  sl<size>      Fichier de proc‚dure avec une taille inf‚rieure … celle sp‚cifi‚e
  sm<size>      Fichier de proc‚dure avec une taille sup‚rieure … celle sp‚cifi‚e
  ta<date>      Traiter les fichiers plus r‚cents que <date> au format YYYYMMDDHHMMSS
  tb<date>      Traiter les fichiers plus anciens que <date> au format YYYYMMDDHHMMSS
  tn<heure>      Traiter les fichiers plus r‚cents que <heure>
  to<heure>      Traiter les fichiers plus anciens que <heure>
  ts<m,c,a>[N]  Sauvegarder ou restaurer la date du fichier (modification, cr‚ation, accŠs)
  u             Mettre … jour les fichiers
  v             Lister tous les volumes
  ver[n]        Contr“le de la version du fichier
  vp            Pause avant chaque volume
  x<fichier>    Exclure les fichiers sp‚cifi‚s
  x@            Lire les noms de fichiers … exclure depuis l'entr‚e standard
  x@<liste>     Exclure les fichiers sp‚cifi‚s dans le fichier liste
  y             R‚pondre Oui … toutes les questions

mood
Publicité
Posté le 09-12-2008 à 08:42:31  profilanswer
 

n°1826187
i'm_here
Tunisie
Posté le 12-12-2008 à 15:57:46  profilanswer
 

Bonsoir,
 
pas encore tester, mais selon le help de la commande :
 
                          Process only files modified after the specified date.
"Format of the date string is YYYYMMDDHHMMSS. It is allowed to insert separators like '-' or ':' to the date string and omit trailing fields. For example, the following switch is correct: -ta2001-11-20. Internally it will be expanded to -ta20011120000000 and treated as "files modified after 0 hour 0 minutes 0 seconds of 20 November 2001".

ceci doit marcher :
 


@REM ------- BEGIN demo.cmd ----------------
@Echo off & setlocal enabledelayedexpansion
 
set path="C:\Program Files\WinRAR\";%path%
 
For /f "Tokens=*" %%i in ('dir /b /s "*.tar.Z"') Do Set fdate=%%~ti & call :do_extract "%%i"
endlocal & pause & goto :eof
 
:do_extract
 
Echo %1
For /f "tokens=1-5 delims=/: " %%a In ("%fdate%" ) Do (Set Ln=%%c%%b%%a%%d%%e)
IF EXIST "%~1.extracted" GOTO EXTRACT
mkdir "%~1.extracted"
pushd "%~1.extracted"
winrar x -y -ta!Ln! -x@E:\Ftp\liste.txt  %1
popd
@goto END
 
 
:EXTRACT
pushd "%~1.extracted"
winrar x -y -ta!Ln! -x@E:\Ftp\liste.txt  %1
popd
@goto END
 
:END
echo %1 >> E:\ftp\liste.txt
@cls
 
REM ------- END demo.cmd ------------------


Message édité par i'm_here le 12-12-2008 à 22:14:59
n°1854937
PsYKrO_Fre​d
Posté le 25-02-2009 à 11:56:46  profilanswer
 

Merci  
 
Je viens à peine de tester...
Cela ne fonctionne pas....  
 
Test effectué :
 
3fichier tar.Z dans el repertoire.
J'ai mis le demo.cmd dans le repertoire
J'ai changé l'adresse du fichier liste.txt
J'ai lancé le batch...
Décompression OK
J'ai supprimé les dossiers décompréssés.
J'ai ouvert le fichier liste.txt et il est bien rempli par les fichiers que j'ai dézipper.
J'ai relancé et il me décompresse à nouveau !

n°1855124
vrobaina
Hecho a Mano
Posté le 25-02-2009 à 15:34:30  profilanswer
 

Truc à la con :
 
pour chaque fichier (toto.rar, titi.rar...etc...) que tu decompresses, tu créés un fichier toto.done, titi.done...etc... de taille nulle
=> lorsque tu parcours la liste de tes fichiers tu regarde s'il n'y a pas deja dans ton arbo un fichier .done  si c'est le cas alors tu passe au fichier suivant.
 


---------------
Les cons, ça ose tout, et c'est même à ça qu'on les reconnait....
n°1855175
PsYKrO_Fre​d
Posté le 25-02-2009 à 17:19:27  profilanswer
 

mmmm... méthode bidouille :) lol  
CA marcherai mais disons qu'il va y avoir beaucoup de fichier zipper ... puisqu'il y a presque un téléchargement de tar.z par jour (voir plusieurs)... donc le repertoire va être rempli de fichier vide mais de fichiers...
 

n°1855180
vrobaina
Hecho a Mano
Posté le 25-02-2009 à 17:32:40  profilanswer
 

bon,

 

comme je suppose que c'est une interface ton truc (genre extraction, compression, push vers ton repertoire, decompression puis traitement...)

 

=> moi, je recopierai les fichiers compressés dans un répertoire (genre d:\incoming) , et lors du parcourt de tes fichiers dans ton repertoire, tu regardes si tu n'as pas le fichier dans ce repertoire incoming.

 

puis touts les X mois, tu purge ton repertoire "d:\incoming"

 

avantage de cette méthode  :
1) tu peux rejouer (decompresser) un fichier dans avoir a editer ton fichier texte. (en copiant de D:\incoming vers ton repertoire de réception)
2) tu as une sauvegarde que ce que tu as reçu dans ton repertoire.

 

PS1: il serait bien que dans ton script, tu controles que la décompression se soit bien passée, cela t'evitera de sales surprises au moment ou tu voudras utiliser un fichier (qui est corrompu).

 

PS2: Penses que si tu dois mettre en batch ton petit script, il ne faut pas que celui-ci se lance au moment ou l'on pose dans ton repertoire tes fichiers RAR, ce serait trop "con" que ton script essai de décompresser un fichier alors que celui-ci n'est pas encore complet.

 


Message édité par vrobaina le 25-02-2009 à 17:34:08

---------------
Les cons, ça ose tout, et c'est même à ça qu'on les reconnait....

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Decompresser automatiquement les fichiers qui l'ont pas déjà été

 

Sujets relatifs
(réglé)afficher une grande image en vraie taille automatiquementmacro word qui divise 1 fichier en plusieurs fichiers
[résolu] Remplacement d'1 caractère dans chaque nom de fic d'1 dossier[résolu] [vbs] Problème pour effacer des fichiers
Renommer des fichiers grâce à une base de données[Résolu] Problème pour lire et écrire des fichiers pgm en C++
Concatenation de fichiers excel de même format dans une base accessFaire interprêter par le framework des fichiers statiques
concatenation de 2 fichiersparser de GROS et NOMBREUX fichiers textes
Plus de sujets relatifs à : Decompresser automatiquement les fichiers qui l'ont pas déjà été


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR