Batch + roulement de fichier - Shell/Batch - Programmation
Marsh Posté le 18-08-2004 à 13:53:58
et puis aussi voir si la date du fichier n'est pas celle qui vient juste d'etre dumpé histoire de ne pas virer le seul backup
Marsh Posté le 18-08-2004 à 14:17:50
dejà tu peux utiliser la parametre /OD de la commande DIR pour trier par date...c'est dans l'ordre croissant du plus vieux au plus recent que ça affichera...
si ça t'aide pas, je commence à plancher sur un .bat qui va "comparer plusieurs fichiers avec une certaine extension, resortir le plus vieux et le supprimer"...
++
Arrakeen
Marsh Posté le 18-08-2004 à 15:43:51
voila une petite sub-routine qui delete le plus vieux fichier dans une extension donnee.
la routine s'appelle :DELETEOLDEST
elle s'appelle avec l'extension en parametre.
ex: call :DELETEOLDEST txt
--> deletera le plus vieux fichier txt
voici un exemple d'execution:
dans un repertoire, j'ai 3 fichiers txt, dont le plus vieux est toto.txt :
Code :
|
voici mon .bat :
Code :
|
...et son execution :
Code :
|
voilou, t'as plus qu'à remplacer la commande echo par del
Marsh Posté le 18-08-2004 à 16:08:41
merci beaucoup
je l'ai adapté et tout fonctionne comme je veux !!
Marsh Posté le 18-08-2004 à 16:11:58
une derniere question je voudrais qu'il verifie le nombre de fichier trouvé.
C'est a dire, si par exemple il ne trouve que 3 fichiers.txt alors il ne supprime pas le plus vieux et il fait un exit
Par contre si il en trouve + de 3 on passe la moulinette.
C'est histoire d'avoir tjs 3 versions des dumps au minimum
C'est possible aussi ?
Marsh Posté le 18-08-2004 à 16:18:24
merci, ne te presse pas, y a pas trop le feu
Marsh Posté le 18-08-2004 à 16:31:28
hop, voici mon .bat révisé :
Code :
|
Marsh Posté le 19-08-2004 à 09:32:11
Encore un grand merci à toi, je test ca de suite
A+
Marsh Posté le 19-08-2004 à 17:11:40
un derniere question :
dans un batch principale de je vais appeler tous mes autres batch (environ 15) mais je voudrais qu'il me les lance 1 par 1
j'ai mis ca :
start batch1
start batch2
start batch3
Mais il va me les lancer en meme temps non ?
Comment faire pour lui dire d'attendre ? Mettre un sleep ?
Marsh Posté le 19-08-2004 à 17:17:10
bon j'ai trouvé, en faisant un call et en virant les EXIT a la fin des autres scripts
A+
Marsh Posté le 19-08-2004 à 17:17:44
non c bon, il devrait les lancer 1 par 1...on peut pas faire du pseudo parallelisme en DOS comme sous unix avec le '&' pour lancer les scripts en background...en DOS, tout s'execute sequentiellement...
Marsh Posté le 19-08-2004 à 17:39:22
bon, dans le doute, fait des :
start /WAIT batch1
start /WAIT batch2
:
fait un help start pour voir toutes les options...
Marsh Posté le 19-08-2004 à 18:03:30
c'est bon ca tourne aussi avec les call
j'ai pu recuperer 25 Go d'espace disque quand même a compresser les dumps
je verrais demain maintenant si le prog a bien fonctionné cette nuit
Merci encore à toi Arrakeen
Marsh Posté le 18-08-2004 à 13:33:36
Salut,
J'ai besoin d'un peu d'aide
Donc voila, j'ai sql server qui me fait tous les soirs (sauf samedi et dimanche) un dump de plusieurs bases de données.
Les bases etant grosses je dois les compresser, j'ai donc fait ce batch (merci Robby pour l'aide)
Par contre, SQL me créé un fichier en .bak, et il s'occupe lui même du roulement.
Si je ne fais rien je vais me retrouver avec tout pleins de dump compressé, car sqlserver ne retrouvera pas l'ancienne version.
Comment donc faire dans un batch pour comparer plusieurs fichiers avec une certaine extension, resortir le plus vieux et le supprimer ?
Dans mon cas actuel on fait comme si il n'y avait qu'une base, apres je vais créer un batch par base pour la compression.
Merci pour votre aide
Message édité par lebibi le 18-08-2004 à 13:35:29
---------------