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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BATCH] Selection du fichier le plus recent

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[BATCH] Selection du fichier le plus recent

n°1653387
Lobster
Pour être bien clair :
Posté le 05-12-2007 à 16:15:45  profilanswer
 

Salut les gens !
 
Voici mon problème :
 
Je dispose d'une grosse quantité de fichier PDF a traiter tout les mois (+ de 3000)
 
Je dispose deja d'un batch créé par mes soins qui fonctionne tres bien.  
SAUF que parmi ceux ci, certains sont en double (voir en triple...) et libéllés de cette maniere :
 
FR0007050190_13062007_1_PROSPECTUS.pdf
FR0007050190_17072007_1_PROSPECTUS.pdf
 
Il contiennent donc une date dans le nom du fichier.
 
De base, le batch copie les fichiers dont j'ai besoin dans un dossier tampon (tri par liste). Mais pour ceux ci, le nom etant different, il me les copient en double.
 
Connaitriez-vous une methode pour permettre la copie de ces doublons en fonction de la date contenus dans le nom du fichier (copie uniquement du plus recent)  ?
 
Merci d'avance pour vos reponses...


---------------
Yargla !!! | La derniere alerte qualitaÿ : avion gelés
mood
Publicité
Posté le 05-12-2007 à 16:15:45  profilanswer
 

n°1653398
Coolnut
Posté le 05-12-2007 à 16:41:29  profilanswer
 

http://membres.lycos.fr/lunnatick/ [...] E9cent.bat

 
Code :
  1. for /f "tokens=4* delims= " %%i in ('dir /o:d "C:\monRep\*.txt" ^| findstr /i /c:".txt"') do set VrFchRcnt=%%i %%j
  2. echo %VrFchRcnt%


Message édité par Coolnut le 05-12-2007 à 16:43:01
n°1653400
Lobster
Pour être bien clair :
Posté le 05-12-2007 à 16:45:58  profilanswer
 

Merci,
 
Je vais essayer ca de suite et voir comment l'intégré a mon batch !
 
:jap:


---------------
Yargla !!! | La derniere alerte qualitaÿ : avion gelés
n°1653401
Coolnut
Posté le 05-12-2007 à 16:46:51  profilanswer
 

montre nous le résultat ;)

n°1653618
Lobster
Pour être bien clair :
Posté le 06-12-2007 à 09:48:46  profilanswer
 

Hop, de retour !
 
Dsl, je n'ai pas montré le résultat plus tôt, j'étais parti... :D
 
Bon, la fonction marche du feu de D.... mais y'a un bémol.
 
Voici le code (temporaire, a des fins de tests) dans lequel elle est intégrée :
 

Code :
  1. :doublon
  2. SET listeyaka=FR0007050190, FR0007060850, FR0010321810
  3. FOR %%a IN (%listeyaka%) DO IF EXIST "%prospectus%\*%%a*.pdf" (
  4. for /f "tokens=4* delims= " %%i in ('dir /o:d "%prospectus%\*%%a*.pdf" ^| findstr /i /c:".pdf"') do set VrFchRcnt=%%i%%j)
  5. XCOPY "%prospectus%\%VrFchRcnt%" "%prospectus%\test" /D /Y
  6. echo %VrFchRcnt%
  7. echo %a%
  8. del "%prospectus%\*%a*.pdf"
  9. pause
  10. echo %VrFchRcnt%
  11. IF EXIST "%prospectus%\*.pdf" (
  12. GOTO doublon
  13. )


 
Comme la fonction ne détecte que le dernier doublon présent dans la quantité de fichier, je suis obligé de faire une boucle, pour qu'elle les traitent tous.
L'inconvénient, c'est que la valeur de "%%a" est perdu après l'exécution  de la recherche de doublon. ce qui fait que je ne peux pas éliminé les fichiers portant le même numéro avant l'exécution de la boucle.
 
Je précise quand même que je ne suis pas un pro du batch. j'utilise des fonctions relativement simple a des fins de tri.
La preuve : la fonction marche du tonnerre, j'ai essayé de la prendre en défaut (:D) mais je ne comprends pas plus que ça comment elle fonctionne  [:anathema]  
 
En tout cas, merci pour tout, et si quelqu'un avait une idée pour mon pb...  [:zytra]


---------------
Yargla !!! | La derniere alerte qualitaÿ : avion gelés
n°1653621
Coolnut
Posté le 06-12-2007 à 10:00:08  profilanswer
 

La variable %%a ne peut être utilieser selement dans un boucle for

n°1653627
Lobster
Pour être bien clair :
Posté le 06-12-2007 à 10:26:12  profilanswer
 

J'ai encore pas mal de truc a apprendre...
 
Effectivement, je viens de me rendre compte que dans mon batch, %%a n'est utilisé que dans les boucle FOR
J'hallucine !
J'ai reussi a développer un batch de 68Ko sans tombé une seule fois sur le cas... [:rofl]  
 
Derniere question : Pourrais tu me donner des infos sur le séparateur "^|" que tu as utilisé dans les parentheses ?
Que signifie-t-il ? y-a-t'il des variantes ?
 
Merci d'avance :jap:


---------------
Yargla !!! | La derniere alerte qualitaÿ : avion gelés
n°1653633
Coolnut
Posté le 06-12-2007 à 10:32:31  profilanswer
 

le séparateu | c'est pour coupler deux commande, par exemple:

Code :
  1. type fichier.txt | find "jul"


Dans une boucle for on doit rajouter ^ devant

n°1653704
Lobster
Pour être bien clair :
Posté le 06-12-2007 à 11:50:13  profilanswer
 

Coolnut a écrit :

le séparateu | c'est pour coupler deux commande, par exemple:

Code :
  1. type fichier.txt | find "jul"


Dans une boucle for on doit rajouter ^ devant


 
Merci !!!
 
Ca y est, ca fonctionne.
 
Voici le code final :

Code :
  1. :doublon
  2. SET listeyaka=FR0007050190, FR0007060850, FR0010321810
  3. FOR %%a IN (%listeyaka%) DO IF EXIST "%prospectus%\*%%a*.pdf" (
  4. for /f "tokens=4* delims= " %%i in ('dir /o:d "%prospectus%\*%%a*.pdf" ^| findstr /i /c:".pdf"') do set VrFchRcnt=%%i%%j& set suppr=%%a)
  5. XCOPY "%prospectus%\%VrFchRcnt%" "%prospectus%\test\" /D /Y
  6. del "%prospectus%\*%suppr%*.pdf"
  7. IF EXIST "%prospectus%\*.pdf" (
  8. GOTO doublon
  9. )


 
Encore merci pour ton aide, coolnut  :jap:  :jap:  :jap:


---------------
Yargla !!! | La derniere alerte qualitaÿ : avion gelés

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

  [BATCH] Selection du fichier le plus recent

 

Sujets relatifs
Fonction racine batchRécupéré et stoquer dans un fichier log les URL visités
[Résolu] Chat: bdd ou fichier?java et fichier *.*
[Oracle - Débutant] Exporter le résultat d'une requête dans un fichierLecture d'un fichier: fin de fichier arrive trop vite!
htaccess > bloquer l'acces a un fichier sauf via un .swf[BATCH] recherche de dossier sur plusieurs serveurs
Serveur de fichier en HTTP ?erreur 9 : l'indice n'appartient pas à sélection !!!!!!!!!!!!!!!!!!!
Plus de sujets relatifs à : [BATCH] Selection du fichier le plus recent


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