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

Decompresser automatiquement les fichiers qui l'ont pas déjà été - Shell/Batch - Programmation

Marsh Posté le 09-12-2008 à 08:42:31    

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

Reply

Marsh Posté le 09-12-2008 à 08:42:31   

Reply

Marsh Posté le 12-12-2008 à 15:57:46    

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
Reply

Marsh Posté le 25-02-2009 à 11:56:46    

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 !

Reply

Marsh Posté le 25-02-2009 à 15:34:30    

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....
Reply

Marsh Posté le 25-02-2009 à 17:19:27    

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...
 

Reply

Marsh Posté le 25-02-2009 à 17:32:40    

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....
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed