[DOS] Supprimer tout sauf une extension

Résolu
Toto -  
Pierrot6150 Messages postés 3186 Statut Membre -
Bonjour,

je souhaite écrire un fichier BATCH qui supprimerait tous les fichiers sauf ceux qui ont une extension particulière.

Comment faire ?

Merci !

15 réponses

  1. morganch
     
    Bonjour .

    Non , mais il y' a plus simple , il faut simplement saisir cette commande sous

    le dossier concerné :

    del *xxx /s /q

    (Bien sûr "*.xxx" représente la véritable extension) .
    1
  2. Toto
     
    Je comprends pas ?

    /s pour supprimer le fichier spécifié des dossiers et sous-dossiers.
    /P pour la confirmation

    En gros tu veux que je dise oui ou non à la main sur 10000 fichiers ?
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    avec un .bat.
    ici on ne garde que les .exe. A tester bien sûr.
    @echo off
    set EXT=.exe
    for /f "delims=" %%f in ('dir /b') do  if not %%~xf == %EXT% del %%f
    
    0
    1. Toto
       
      Je viens d'utiliser la portion de code suivante
      if not %%~xf == %EXT%


      Ca ne semble pas fonctionner.

      J'ai aussi essayé
      set EXT=*.bat
      ...
      if not %%a == %EXT% (..)
      

      Mais le symbole '*' ne semble pas être bien interprété...
      0
  4. Toto
     
    Je vais tenter demain. Merci pour le message.
    Il faudrait que ce soit récursif dans chaque sous dossier. Et je suis dessus aussi, sauf que je n'arrive pas à détecter les sous-dossiers d'un dossier en Batch.

    set VrSource=C:\/"Documents and Settings/"\tts\/"Mes documents/"\Toto\TestEcnryption
    for %%b In ('dir /AD %VrSource%') Do (
    		echo %%b
    )

    Ce bout de code ne m'affiche pas les sous dossiers que l'on trouve dans TestEcnryption. Je ne sais pas trop pourquoi..

    Je ne maîtrise pas le Batch et je fais au hasard pour tout ce qui est guillemet etc autour des variables, des commandes etc...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    utiliser dir /b/s pour aller dans les sous dossiers
    0
  7. Toto
     
    Non ça ne marche pas non plus. C'est peut être la bonne utilisation, mais je l'utilise probablement mal... Toujours est-il que le 'echo %%b' m'affiche le chemin %VrSource% et c'est tout. Pas de sous dossier etc... Je suis vraiment bloqué :s
    0
  8. Toto
     
    Il faut aussi garder en tête que je ne connais pas les noms des sous répertoire.
    0
  9. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    essayer
    set VrSource="C:\Documents and Settings\tts\Mes documents\Toto\TestEcnryption"
    for /f "delims="  %%b In ('dir /b/s  %VrSource%') Do (
    		echo %%b
    )
    0
  10. Toto
     
    J'ai le message suivant :

    Option non valide - ""Documents and Settings/"\tts\".


    Je vais regarder ça de plus prêt.
    0
    1. Pierrot6150 Messages postés 3186 Statut Membre 561
       
      "C:\Documents and Settings\tts\Mes documents\Toto\TestEcnryption"

      Pour vérifier que le chemin est bien correct...
      Exécuter cmd.exe
      Ensuite exécute une commande à la fois, et des qu'il y a une erreur...
      faire un dir *.* pour afficher le contenue fichier/dossier

      cd "C:\Documents and Settings"
      cd tts
      cd "Mes documents"
      cd Toto
      cd TestEcnryption
      0
    2. Toto
       
      J'ai vérifié, mais de toute manière, ce chemin est utilisé à d'autres endroits et ça fonctionne.
      0
    3. Pierrot6150 Messages postés 3186 Statut Membre 561
       
      Si ce chemin est correct, alors pourquoi une erreur...

      Option non valide - ""Documents and Settings/"\tts\". ???
      0
  11. Toto
     
    Si je fais juste
    for %%b In ('dir /b/s  %VrSource%') Do (
    	echo %%b
    )


    j'ai l'impression qu'il n'exécute pas la commande 'dir' car echo %%b affiche :

    'dir
    /b/s
    C:\/"Documents and Settings/"\tts\/"Mes documents/"\Nicolas\TestEcnryption'
    0
    1. Pierrot6150 Messages postés 3186 Statut Membre 561
       
      @echo off
      setlocal EnableDelayedExpansion

      cls

      set VrSource="C:\Documents and Settings\tts\Mes documents\Toto\TestEcnryption"

      for /R %VrSource% %%b In (*.* ) Do echo %%b

      echo.
      pause
      0
  12. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    lis mes réponses
    0
    1. Toto
       
      Au temps pour moi, mon erreur venait des guillemets autour du chemin d'accès.. En effet, ça marche. Ca me sort tous les fichiers et sous-dossiers. Je pensais que je n'aurais que les dossier en fait.
      Alors en rajoutant l'option /AD, je ne récupère que les sous-dossiers.

      for /f "delims="  %%b In ('dir /b/s/ad %VrSource%') Do (
      		echo %%b
      )


      Par contre, je ne comprends pas bien le rôle/fonctionnement de delims écrit comme ça ?
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      pour tenir comptes des noms de fichiers contenant un ou des espaces
      0
  13. junico
     
    Bonjour,
    Sauve les extentions particuliaires et puis delete tous tes fichiers, puis recopie les fichiers sauvegardés !
    Avec un .bat avec Xcopy et \exclude
    0
    1. Toto
       
      Je ne voulais pas faire ça parce qu'il peut y avoir plusieurs Mo voire Go de données. Alors faire des copier/coller, c'est peut être pas la bonne solution ?
      0
  14. Edawards Messages postés 16906 Date d'inscription   Statut Membre Dernière intervention   1 979
     
    Bonjour,
    Voir ici peut-etre :

    http://www.hotline-pc.org/batch.htm
    0
    1. Toto
       
      Merci ! J'y ai trouvé des informations précieuses. J'aurais aimé avoir ça quand j'ai commencé ce script :)
      0
    2. Edawards Messages postés 16906 Date d'inscription   Statut Membre Dernière intervention   1 979
       
      De rien. Mettre en résolu pour aider les autres aussi.
      Merci.
      0
    3. Edawards Messages postés 16906 Date d'inscription   Statut Membre Dernière intervention   1 979
       
      Merci à vous d'avoir mis le solution.
      0
  15. Toto
     
    Je souhaite effectuer des commandes sur des noms de fichier n'ayant pas un extension particulière. Dubcek proposait:

    @echo off
    set EXT=.exe
    for /f "delims=" %%f in ('dir /b') do  if not %%~xf == %EXT% del %%f
    


    Je viens d'utiliser la portion de code suivante

    if not %%~xf == %EXT%
    


    Ca ne semble pas fonctionner.

    J'ai aussi essayé

    set EXT=*.bat
    ...
    if not %%a == %EXT% (..)
    


    Mais le symbole '*' ne semble pas être bien interprété...

    Une idée ?
    merci !
    0
    1. Edawards Messages postés 16906 Date d'inscription   Statut Membre Dernière intervention   1 979
       
      Bonjour,
      Allez sur le forum Bureautique sur cette page en haut dans l'onglet : liste des forums.
      0
    2. Toto
       
      Pourquoi faire ?
      0
    3. Edawards Messages postés 16906 Date d'inscription   Statut Membre Dernière intervention   1 979
       
      Bonjour,
      Pour XP par exemple puisque vous ne donnez pas votre version windows :
      Ouvrir un nouveau fichier vierge dans le bloc-notes de la meme manière. Copiez-y le texte : le texte est : windows.
      Vérifier ensuite que ce fichier ne possède bien aucune extension (pour cela les extensions doivent etre affichées -cf §1-).
      Il faut faire apparaitre l'extension et pour pouvoir l'effacer, c'est simple, une fois le fichier créée, il suffit de cliquer deux fois lentement sur le titre et vous pouvez le modifier, en effacant le .xxx, l'extension est alors supprimée (ou en faisant un clic droit, puis la renommer).
      Info : si votre version de xp, (si xp), est une "media center", la procédure ne fonctionne pas en présence de cette version, que trés rarement.
      0
    4. Toto
       
      Merci, mais ce n'est pas exactement ce que je veux faire...
      Il s'agit d'un process automatisé via un script Batch qui aurait pour but d'effectuer des commandes sur tous les fichiers sauf ceux ayant une extension particulière. Dans mon cas l'extension c'est .bat.
      Donc j'essayais d'utiliser la solution de Dubcek pour travailler sur les bons fichiers, mais ça ne fonctionne pas...
      0
    5. Edawards Messages postés 16906 Date d'inscription   Statut Membre Dernière intervention   1 979
       
      cpau -k -cwd "repertoire d'execution" -u user -p password -ex test2.batCode test2.bat :
      copy "bla.txt" "rep admin"
      Essayez avec cela et voir.
      0
  16. Pierrot6150 Messages postés 3186 Statut Membre 561
     
    set EXT=*.bat doit être set EXT=.bat

    Tu ne prend que l'extension pour comparer, normal que tout ce qui est avant le point n'existe pas.

    .BAT .EXE .HTML etc...

    Pour connaitre les paramètres exact d'une fonction, dans l'invite de commande...
    FOR /?

    Cela est valable pour toute les fonctions possible en batch.
    0