Batch --> regrouper plusieurs fichiers texte en un seul

Batch --> regrouper plusieurs fichiers texte en un seul - Shell/Batch - Programmation

Marsh Posté le 31-08-2005 à 15:35:59    

Bonjour à tous,
 
J'ai des fichiers texte qui se génèrent chaque jours avec pour type de nom : 20050221.txt, c'est à dire annéemoisjour.txt
 
Je voudrait faire un script en batch qui me regroupe les fichiers à partire d'une date que l'on donne en un seul fichier.
 
Mais là, n'étant pas un fana de windows ni du batch; j'avoue ne pas voir du tout comment faire.
 
Si vous pouviez m'aider, ce serait sympa :)
 
Merci d'avance ;)


Message édité par P1511GD le 31-08-2005 à 15:54:34

---------------
A bientot ;)
Reply

Marsh Posté le 31-08-2005 à 15:35:59   

Reply

Marsh Posté le 31-08-2005 à 15:43:38    

je serai toi je ferai cela en perl :)
mais il y a peut etre une manière plus facile de le faire en batch windows de la meme manière que sous linux.
 

Reply

Marsh Posté le 31-08-2005 à 15:44:49    

je ne connais pas le perl :(


---------------
A bientot ;)
Reply

Marsh Posté le 31-08-2005 à 15:46:16    

attends un meilleur avis que le mien ;)

Reply

Marsh Posté le 31-08-2005 à 15:48:42    

P1511GD a écrit :

Je voudrait faire un script en bash qui me regroupe les fichiers à partire d'une date que l'on donne en un seul.
 
Mais là, n'étant pas un fana de windows ni du batch; j'avoue ne pas voir du tout comment faire.


 
Par "bash", tu parles bien de "bash le shell sous unixoïdes", ou c'est "batch" écrit différement ?
 
 
 
 

P1511GD a écrit :

J'ai des fichiers texte qui se génèrent chaque jours avec pour type de nom : 20050221.txt, c'est à dire annéemoisjour.txt
 
Je voudrait faire un script en bash qui me regroupe les fichiers à partire d'une date que l'on donne en un seul.


 
Par "date que l'on donne", tu veux dire une année ou un mois+année particulier, et dans ce cas tu veux concaténer tous les fichiers concernés, ou tu veux dire un ensemble de dates qu'on passe en paramètre, genre 20050221 + 20050222 + 20050302 etc ?

Reply

Marsh Posté le 31-08-2005 à 15:54:02    

oups, désolé, j'ai confondu bash et batch ;)
 
je veux par exemple pouvoir regrouper les fichier existant depuis le 17 janvier 2005 en un seul fichier ;)
 
meme si il faut mettre cette date dans le code source, ce n'est pas genant ;)


---------------
A bientot ;)
Reply

Marsh Posté le 31-08-2005 à 15:56:22    

Ah ben en bash j'aurais pu répondre, c'était facile, mais en batch aucune idée.  
Je ne sais pas si on peut faire des comparaisons numériques en batch. :sweat:


Message édité par Elmoricq le 31-08-2005 à 15:56:41
Reply

Marsh Posté le 31-08-2005 à 15:59:41    

ce n'est pas grave, mais merci pour ta réponse ;)


---------------
A bientot ;)
Reply

Marsh Posté le 31-08-2005 à 17:33:04    

up!


---------------
A bientot ;)
Reply

Marsh Posté le 31-08-2005 à 17:57:42    

à la limite je veux juste savoir comment rassembler plusieurs fichiers texte en un seul pour les date je vais y arriver ;)


---------------
A bientot ;)
Reply

Marsh Posté le 31-08-2005 à 17:57:42   

Reply

Marsh Posté le 31-08-2005 à 18:26:09    

trouvé pour ça :) :
par exemple :

Code :
  1. type fichier1.txt >> fichierfinal.txt
  2. type fichier2.txt >> fichierfinal.txt
  3. ...

Reply

Marsh Posté le 31-08-2005 à 23:33:39    

Salut,
 
C'est assez simple en fait ;)
 
Regarde l'aide des commandes for et if : for pour parcourir la liste des fichiers dans le dossier, et if pour la comparaison.
 

Reply

Marsh Posté le 01-09-2005 à 07:35:30    

en fait j'ai trouvé :)
mais ce que j'ai fait est dégueu :d
mais ça marche (bien) :d
 

Code :
  1. for /f "tokens=1-3 delims=/" %%f in ("%date%" ) do (
  2. set datation=%%f%%g%%h
  3. set jour=%%f
  4. set mois=%%g
  5. set an=%%h)
  6. echo %datation%
  7. echo J=%jour% M=%mois% A=%an%
  8. set jour2=%jour%
  9. set /a jour2-=15
  10. set datf=%an%%mois%%jour2%
  11. echo datf=%datf%
  12. cd \\METHODE\logs
  13. :B1
  14. if not exist %datf%.txt goto B2
  15. type %datf%.txt >> logs_%datation%.txt
  16. goto B2
  17. :B2
  18. set /a jour2+=1
  19. set datf=%an%%mois%%jour2%
  20. if not exist %datf%.txt goto B3
  21. type %datf%.txt >> logs_%datation%.txt
  22. Goto B3
  23. :B3
  24. set /a jour2+=1
  25. set datf=%an%%mois%%jour2%
  26. if not exist %datf%.txt goto B4
  27. type %datf%.txt >> logs_%datation%.txt
  28. Goto B4
  29. :B4
  30. set /a jour2+=1
  31. set datf=%an%%mois%%jour2%
  32. if not exist %datf%.txt goto B5
  33. type %datf%.txt >> logs_%datation%.txt
  34. Goto B5
  35. :B5
  36. set /a jour2+=1
  37. set datf=%an%%mois%%jour2%
  38. if not exist %datf%.txt goto B6
  39. type %datf%.txt >> logs_%datation%.txt
  40. Goto B6
  41. :B6
  42. set /a jour2+=1
  43. set datf=%an%%mois%%jour2%
  44. if not exist %datf%.txt goto B7
  45. type %datf%.txt >> logs_%datation%.txt
  46. Goto B7
  47. :B7
  48. set /a jour2+=1
  49. set datf=%an%%mois%%jour2%
  50. if not exist %datf%.txt goto B8
  51. type %datf%.txt >> logs_%datation%.txt
  52. Goto B8
  53. :B8
  54. set /a jour2+=1
  55. set datf=%an%%mois%%jour2%
  56. if not exist %datf%.txt goto B9
  57. type %datf%.txt >> logs_%datation%.txt
  58. Goto B9
  59. :B9
  60. set /a jour2+=1
  61. set datf=%an%%mois%%jour2%
  62. if not exist %datf%.txt goto B10
  63. type %datf%.txt >> logs_%datation%.txt
  64. Goto B10
  65. :B10
  66. set /a jour2+=1
  67. set datf=%an%%mois%%jour2%
  68. if not exist %datf%.txt goto B11
  69. type %datf%.txt >> logs_%datation%.txt
  70. Goto B11
  71. :B11
  72. set /a jour2+=1
  73. set datf=%an%%mois%%jour2%
  74. if not exist %datf%.txt goto B12
  75. type %datf%.txt >> logs_%datation%.txt
  76. Goto B12
  77. :B12
  78. set /a jour2+=1
  79. set datf=%an%%mois%%jour2%
  80. if not exist %datf%.txt goto B13
  81. type %datf%.txt >> logs_%datation%.txt
  82. Goto B13
  83. :B13
  84. set /a jour2+=1
  85. set datf=%an%%mois%%jour2%
  86. if not exist %datf%.txt goto B14
  87. type %datf%.txt >> logs_%datation%.txt
  88. Goto B14
  89. :B14
  90. set /a jour2+=1
  91. set datf=%an%%mois%%jour2%
  92. if not exist %datf%.txt goto B15
  93. type %datf%.txt >> logs_%datation%.txt
  94. Goto B15
  95. :B15
  96. set /a jour2+=1
  97. set datf=%an%%mois%%jour2%
  98. if not exist %datf%.txt goto B16
  99. type %datf%.txt >> logs_%datation%.txt
  100. Goto B16
  101. :B16
  102. wordpad logs_%datation%.txt

Reply

Marsh Posté le 01-09-2005 à 07:53:53    

P1511GD a écrit :

mais ça marche (bien) :d


T'en es sûr ? ;)
Ca a marché lors de tes tests parce qu'hier était un 31. Teste aujourd'hui, tu vas avoir des surprises :)
 
Mais c'est un très bon début. Regarde ce topic, il y a quelques points communs :
http://forum.hardware.fr/hardwaref [...] 3264-1.htm
 
(le script proposé n'est pas très propre, mais tu peux t'en inspirer)

Reply

Marsh Posté le 01-09-2005 à 09:16:04    

franchement sans vouloir faire le rabat joie, si tu doit faire d'autre scripts du meme style le perl est un régal :)

Reply

Marsh Posté le 01-09-2005 à 12:57:33    

ah oui c'est vrai ça marche pas aujourd'hui :d
va falloir que je m'y replonge :p
c'est clair que le batch c'est pas top du tout :/ mais bon j'avais pas le choix.


---------------
A bientot ;)
Reply

Sujets relatifs:

Leave a Replay

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