sauf [batch] - Programmation
Marsh Posté le 09-07-2001 à 23:09:19
Une solution qui marche avec 2 fichiers batch :
Code :
|
Marsh Posté le 10-07-2001 à 10:26:27
tu pourrais detailler, stp (a quoi servent les commandes)
ca me met "commande ou nom de fichier incorrect"
si je veux supprimer des fichiers qui ne sont pas dans le repertoire de ce prog, ou est*ce*que je mets les adresses des fichiers ??
Marsh Posté le 10-07-2001 à 10:52:41
Tu crée 2 fichier batch suppr.bat et do suppr.bat
Dans mon exemple : "-> FICHIER suppr.bat" c'était juste pour indiquer le nom du fichier, faut pas mettre çà dedans, c'est pas
des commandes batch !
Le fichier suppr.bat :
@echo off
for %%a in (*.*) do call dosuppr.bat %%a
Le @echo off, c'est pour que les commandes ne s'affichent pas à l'écran
le for %%a in ..., c'est une boucle qui va donner à %a les valeurs successives de ce qu'il y a dans entre parenthèse. Ce peut être une énumération : (a, b, c, d, toto, slurp) ou comme dans notre cas, un chemin et une spécification de fichier.
J'avais mis *.* ce qui veut dire tous les fichiers, quel que soit leur noms et leur extention, dans le répertoire courrant.
Si tu essaye par exemple de taper directement sur la ligne de commande :
for %a in (c:\windows\*.ini) do @echo %a
Il t'affiche la liste des fichier *.ini de windows. C'est un moyen plus compliqué de faire une DIR
Remarque : Dans un fichier batch, il faut utiliser %%a et pas %a comme nom de variable dans une boucle for...
donc pour chaque fichier de (*.*), la boucle execute la commande située après le do.
Dans notre cas, on appelle (call) un fichier batch (dosuppr.bat) avec un paramètre qui est %%a, donc le nom de notre fichier à traiter.
Le fichier dosuppr.bat
if "%1"=="suppr.bat" goto fin
if "%1"=="dosuppr.bat" goto fin
if "%1"=="Fichier_A_Ne_Pas_Supprimer.fic" goto fin
...
del %1
:fin
si un fichier batch recois des paramètres, ils s'appellent %1, %2, %3 ... %9
Dans notre cas, un seul paramètre donc %1
Ensuite, on vérifie que le fichier doit bien être traité.
if "%1"=="suppr.bat" goto fin
Si %1 est un nom de fichier qu'on ne veut pas supprimer, on va à la fin, (:fin)
Enfin, on supprime le fichier !
del %1
-------------
Maintenant, si tu veut pouvoir utiliser cette procédure en lui indiquant un chemin, il faut l'adapter :
Le fichier suppr.bat :
@echo off
for %%a in (%1\*.*) do call dosuppr.bat %%a
Là, il faut utiliser suppr.bat de la manière suivante :
suppr c:\temp
Attention, si tu utilise suppr sans paramètre, le traitement se fera sur la racine \ du disque courrant !
Pour faire des test, je te conseil faire çà :
Dans suppr.bat, met en premiere ligne:
del c:\testsuppr.txt
et dans dosuppr.bat
@echo del %1 >> c:\testsuppr.txt
à la place de
del %1
Cela va te générer un fichier c:\testsuppr.txt qui contiendra la liste des DEL à faire. Il te suffit de le lire pour vérifier que la procédure ne supprime rien d'important.
Tu peut aussi renomer ce ficher en .bat et le lancer pour qu'il fasse les supressions...
OK ?
[edtdd]--Message édité par Mara's dad--[/edtdd]
Marsh Posté le 10-07-2001 à 11:41:43
j'essaye de comprendre et je reviens
tu pourrais me montrer comment faire un prog qui del tous les .txt de c:\windows\cookies, SAUF sans nom@sqlforum[1].txt (cookies de hfr) ??
merci.
Marsh Posté le 10-07-2001 à 11:43:50
Citation : Dans mon exemple : "-> FICHIER suppr.bat" c'était juste pour indiquer le nom du fichier, faut pas mettre çà dedans, c'est pas |
Marsh Posté le 10-07-2001 à 11:43:51
Citation : Dans mon exemple : "-> FICHIER suppr.bat" c'était juste pour indiquer le nom du fichier, faut pas mettre çà dedans, c'est pas |
Marsh Posté le 10-07-2001 à 11:50:58
Une solution plus simple :
1 - Renomer les fichiers qu'on veux garder ou les protéger en écriture et/ou les cacher !
2 - supprimer les .txt
3 - Faire l'inverse de 1.
Exemple avec les permissions :
cd c:\windows\cookies
attrib +H +R nom@sqlforum[?].txt
del *.txt
attrib -H -R nom@sqlforum[?].txt
Remarque, j'ai mis ? à la place de 1, car chez moi, j'ai remarqué qu'il y avais sqlforum[1].txt et sqlforum[2].txt.
Marsh Posté le 10-07-2001 à 12:14:10
Zarbi !
Chez moi (avec NT4.0) çà marche !
Essaye comme çà pour voir :
attrib +H +R "nom@sqlforum[?].txt"
Marsh Posté le 10-07-2001 à 12:55:21
idem
tu saurais pas comment modifier la taille d'un fichier en batch, du genre faire prendre 3 Mo a un fichier n'en occupant que 2 ??
est-il ainsi possible de faire la manip inverse : faire prndre moins de place a un fichier ??
Marsh Posté le 10-07-2001 à 13:39:15
Je vois pas trop l'intéret à augmenter la taille d'un fichier, mais bon, si tu y tiens !
Par exemple : si le fichier a.txt fait 2Mo et le fichier b.txt fait 1Mo, "copy a.txt + b.txt c.txt" va créer un fichier c.txt faisant 3Mo et contenant a.txt et b.txt. L'opération inverse ne pourra pas être faite en batch !
Sinon, pour réduire la taille d'un fichier, il faut soit enlever une partie des informations qu'il contient, soit le compresser avec des outils genre PKZIP, RAR, ARJ...
Remarque : Ces outils sont en général capable de découper le résultat final en plusieurs fichiers, plus petits donc, mais aussi plus nombreux !
C'est pourquoi que tu veux AUGMENTER la taille d'un fichier ? ? ?
Marsh Posté le 10-07-2001 à 13:47:25
y'a pas moyen de modifier la taille sans coller 2 fichiers ensemble ??
pour le zip,..... je connaissais deja, je voulais juste savoir s'il y avait moyen de le faire en batch
Marsh Posté le 10-07-2001 à 13:57:02
Si tu connais PKZIP...
Au lieu de taper les commandes, tu les met dans un batch, c'est tout !
Sinon, pour augmenter la taille d'un fichier, là je vois pas !
Un fichier, çà contient un certain nombre d'uinité d'information élémentaire (Pour un fichier, l'unité est l'octet, pour simplifier). Augmenter la taille du fichier, çà veut dire ajouter de l'information.
Maintenant, si tu explique pourquoi tu veut faire çà, peut-être qu'on pourrait imaginer une solution...
Marsh Posté le 10-07-2001 à 17:06:41
j'avais entendu dire qu'on pouvait le faire et je voulais savoir si c'etait reellement possible
Marsh Posté le 10-07-2001 à 17:22:46
Pour QUOI faire ? ? ?
Marsh Posté le 10-07-2001 à 23:54:59
Y'en a qu'ont un _probleme_
[edtdd]--Message édité par Mara's dad--[/edtdd]
Marsh Posté le 09-07-2001 à 22:45:03
est-il possible d'inclure dans un programme en batch la notion "sauf" : supprimer tous les fichiers d'un repertoire, SAUF un (ou plusieurs) ??