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

  FORUM HardWare.fr
  Programmation

  [batch] sauf

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[batch] sauf

n°45495
_probleme_
Posté le 09-07-2001 à 22:45:03  profilanswer
 

est-il possible d'inclure dans un programme en batch la notion "sauf" : supprimer tous les fichiers d'un repertoire, SAUF un  (ou plusieurs) ??

mood
Publicité
Posté le 09-07-2001 à 22:45:03  profilanswer
 

n°45500
Mara's dad
Yes I can !
Posté le 09-07-2001 à 23:09:19  profilanswer
 

Une solution qui marche avec 2 fichiers batch :
 

Code :
  1. -> FICHIER suppr.bat
  2. @echo off
  3. for %%a in (*.*) do call dosuppr.bat %%a
  4. -> FICHIER dosuppr.bat
  5. if "%1"=="suppr.bat" goto fin
  6. if "%1"=="dosuppr.bat" goto fin
  7. if "%1"=="Fichier_A_Ne_Pas_Supprimer.fic" goto fin
  8. ...
  9. del %1
  10. :fin


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°45558
_probleme_
Posté le 10-07-2001 à 10:26:27  profilanswer
 

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 ??

n°45566
Mara's dad
Yes I can !
Posté le 10-07-2001 à 10:52:41  profilanswer
 

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]


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°45591
_probleme_
Posté le 10-07-2001 à 11:41:43  profilanswer
 

:sleep:  :sleep:  :sleep:  :sleep:  :sleep:  :sleep:  :sleep:  
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.

n°45592
_probleme_
Posté le 10-07-2001 à 11:43:50  profilanswer
 

Citation :

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 !


 
 :D

n°45593
_probleme_
Posté le 10-07-2001 à 11:43:51  profilanswer
 

Citation :

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 !


 
 :D

n°45596
Mara's dad
Yes I can !
Posté le 10-07-2001 à 11:50:58  profilanswer
 

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.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°45606
_probleme_
Posté le 10-07-2001 à 12:08:56  profilanswer
 

"valeur de parametre non permise - ?].txt"

n°45607
_probleme_
Posté le 10-07-2001 à 12:09:49  profilanswer
 

ca me met ca, mais ca marche  :sarcastic:  :crazy:

mood
Publicité
Posté le 10-07-2001 à 12:09:49  profilanswer
 

n°45611
Mara's dad
Yes I can !
Posté le 10-07-2001 à 12:14:10  profilanswer
 

Zarbi !
Chez moi (avec NT4.0) çà marche !
 
Essaye comme çà pour voir :
attrib +H +R "nom@sqlforum[?].txt"


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°45628
_probleme_
Posté le 10-07-2001 à 12:55:21  profilanswer
 

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 ??

n°45639
Mara's dad
Yes I can !
Posté le 10-07-2001 à 13:39:15  profilanswer
 

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 ? ? ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°45645
_probleme_
Posté le 10-07-2001 à 13:47:25  profilanswer
 

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

n°45650
Mara's dad
Yes I can !
Posté le 10-07-2001 à 13:57:02  profilanswer
 

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...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°45752
_probleme_
Posté le 10-07-2001 à 17:06:41  profilanswer
 

j'avais entendu dire qu'on pouvait le faire et je voulais savoir si c'etait reellement possible

n°45762
Mara's dad
Yes I can !
Posté le 10-07-2001 à 17:22:46  profilanswer
 

Pour QUOI faire ? ? ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°45802
_probleme_
Posté le 10-07-2001 à 22:53:30  profilanswer
 

pour voir si c'est reellement possible

n°45814
Mara's dad
Yes I can !
Posté le 10-07-2001 à 23:54:59  profilanswer
 

Y'en a qu'ont un _probleme_ ;)

 

[edtdd]--Message édité par Mara's dad--[/edtdd]


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.

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

  [batch] sauf

 

Sujets relatifs
cherche tut pour faire des menus dans les fichiers batch sous dos[batch] rename
[batch][batch] comment faire pour
petit prog en batch pour gagner de l'espace diskProgrammation Batch
Un batch qui desactive la lecture seulesupprimer le dossier historique de windows sous batch
help sous batchpeut on faire des conditions sur la taille des fichiers avec un batch
Plus de sujets relatifs à : [batch] sauf


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