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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] Une condition qui n'est pas vérifiée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Batch] Une condition qui n'est pas vérifiée

n°2000301
hypershade
No shades in the dark
Posté le 09-06-2010 à 17:33:21  profilanswer
 

Bonjour à tous,  :hello:  
 
J'ai un souci avec un script DOS dont je n'arrive pas à éclaircir le mystère, mais je vous explique d'abord mon script.  :jap:  
Mon script copie des fichiers logs du jour (ou de la veille le cas échéant) et m'envoie leur contenu dans un mail.
 
1 - Le fichier crée un DossierA
2 - Le script vérifie si il existe des fichiers crées aujourd'hui dans un DossierB
      2.1 - Si oui, il va a 7
      2.2 - Si non, il va a 3 pour changer la date
 
3 - Les fichiers n'ont pas été copié donc je vais changer la date du jour avec la date d'hier pour copier les fichiers de la veille
      3.1 - Si aujourd'hui on est le 1er tu vas changer le mois (il va a 4)
      3.2 - Si aujourd'hui on est pas le 1er tu va a 5 pour changer le jour
 
4 - On va vérifier le mois
      4.1 - Si le mois est pair alors le jour de la veille est 31
      4.2 - Si le mois est impair alors le jour de la veille est 30
      4.3 - Si le mois est Février alors le jour de la veille est 28
      4.4 - En plus d'un des 3 trois cas précédents, on change le numéro du mois avec le numéro du mois d'avant.
 
5 - Je change le numéro du jour par celui de la veille
 
6 - Maintenant qu'on a mis changé la date d'aujourd'hui par celle de la veille on ré-essaye de copier les fichiers de la veille.
 
7 - J'écris le contenu de tous les fichiers récupérés dans un fichier texte que je copie dans un DossierC
 
8 - J'envoie le fichier texte final par mail.
 
Voila pour le déroulement, voici maintenant le code :
 

Code :
  1. ECHO ON
  2. cd \
  3. mkdir c:\DossierA
  4. for /f "tokens=1-3 delims=/ " %%a in ('date/t') do set MM=%DATE:~4,2%
  5. for /f "tokens=1-3 delims=/ " %%a in ('date/t') do set DD=%DATE:~7,2%
  6. for /f "tokens=1-3 delims=/ " %%a in ('date/t') do set YY=%DATE:~10,4%
  7. xcopy C:\DossierB\*.* C:\DossierA\ /D:%MM%/%DD%/%YY%
  8. IF exist c:\DossierA\*.log GOTO suite
  9. IF not exist c:\DossierA\*.log GOTO dateavant
  10. :dateavant
  11. if %DD%==01 GOTO moisavant
  12. if %DD% NEQ 01 GOTO continue
  13. :moisavant
  14. if %MM%%2==0 set /a DD=30
  15. if %MM%%2 NEQ 0 set /a DD=31
  16. if %MM%==02 set /a DD=28
  17. set /a MM=%MM%-1
  18. :continue
  19. set /a DD=%DD%-1
  20. xcopy C:\DossierB\*.* c:\DossierA\ /D:%MM%/%DD%/%YY%
  21. :suite
  22. cd \
  23. cd c:\DossierA
  24. type *.log > %DD%-%MM%-%YY%.txt
  25. xcopy %DD%-%MM%-%YY%.txt c:\DossierFinal\
  26. cd \
  27. cd c:\DossierA
  28. del /Q *.*
  29. cd \
  30. rmdir DossierA
  31. cd \
  32. //Et j'envoie par mail


 
Le soucis est que pour la première condition :
 
IF exist c:\DossierA\*.log GOTO suite
IF not exist c:\DOssierA\*.log GOTO dateavant
 
Il ne la vérifie pas ! et change la date n'importe comment !
 
Donc selon vous, qu'est-ce qui cloche?   :??:


---------------
Hypershade's Gallery
mood
Publicité
Posté le 09-06-2010 à 17:33:21  profilanswer
 

n°2001388
hypershade
No shades in the dark
Posté le 14-06-2010 à 09:34:19  profilanswer
 

up :)


---------------
Hypershade's Gallery
n°2001797
aigles
Posté le 15-06-2010 à 13:18:17  profilanswer
 

Peux-tu nous mettre la trace d'exécution du script.
 
Juste un petit détail, pour la détermination de DD, MM et YY il est inutile d'utiliser for, les commandes set sont suffisantes.
Il faut bien s'assurer du format de la valeur de DATE.
Sur mon PC, elle est au format 'jj/mm/aaa' ce qui donne :

@ECHO OFF
set DD=%DATE:~0,2%
set MM=%DATE:~3,2%
set YY=%DATE:~6,4%
echo DATE = [%DATE%] = [%DD%]/[%MM%]/[%YY%]

Résultat

DATE = [15/06/2010] = [15]/[06]/[2010]


 
Jean-Pierre.

n°2001904
hypershade
No shades in the dark
Posté le 15-06-2010 à 17:25:30  profilanswer
 

Le système est en anglais
 
En fait j'ai supprimé un IF et ca marche bien. Pas besoin de 2 IF en fait, j'en met 1 si il respecte la condition il suit le IF sinon il poursuit le code :)
 
Merci quand même :jap:


---------------
Hypershade's Gallery

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

  [Batch] Une condition qui n'est pas vérifiée

 

Sujets relatifs
Condition, si la requete sql n'affiche rienbatch msdos et port série
fichier batchCondition "IF" qui ne fonctionne pas
Condition de navigateurVB : condition selon l'url d'un WebBrowser
Copier/coller des cellules sous conditionCondition If...End if à l'intérieur d'une boucle For...Next
[Batch - Débutante] Récupérer l'IP après le ping d'une machine[batch] Supprimer un fichier par rapport à la date
Plus de sujets relatifs à : [Batch] Une condition qui n'est pas vérifiée


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