IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Supprimer tous les fichiers sauf extensions [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Par défaut Supprimer tous les fichiers sauf extensions
    Bonjour à tous,

    Je cherche à supprimer tous les fichiers d'un répertoire sauf trois extensions particulière : .tex .bib et .bat

    Je ne suis pas un expert en batch, d'habitude je nome les extensions que je veux supprimer, exemple : .

    Mais dans le cas présent il y a trop d'extension et certain fichier sans extensions (compilation latex) par conséquent pour un nettoyage efficace
    je veux tout supprimer sauf les extensions susnommé.

    Pour le moment j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo off
    set EXT1=.tex
    set EXT2=.bat
    for /f "delims=" %%f in ('dir /b') do if not %%~xf == %EXT1% del %%f
    Et je ne sais pas comment faire un et logique pour garder les fichiers EXT2 ??

    Par avance merci de votre aide.

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Salut,

    utilise un switch que tu set à 1 si le fichier à une des extensions définie.
    si le switch est égal à 0 tu peux détruire le fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
    set EXT1=.tex
    set EXT2=.bat
    set EXT3=.bib
    
    
    for /f "delims=" %%f in ('dir /b') do (set $switch=0
                                                    if %%~xf == %EXT1%  set $switch=1
                                                    if %%~xf == %EXT2%  set $switch=1
                                                    if %%~xf == %EXT3%  set $switch=1
                                                    if !$switch!==0 del %%f)
    Amicalement

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Par défaut
    Merci de t'intéresser à mon problème,

    Cependant j'ai toujours un petit problème :
    - set $switch=1 ne semble pas changer

    j'ai testé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off
    cls
    set EXT1=.tex
    set EXT2=.bat
    set EXT3=.bib
    
    for /f "delims=" %%a in ('dir /b') do ( set $switch=0
                                            if %%~xa == %EXT1% set $switch=1 && echo %%a
    										echo %$switch%
                                          )
    le noms du fichier truc.tex s'affiche mais echo %$switch% affiche toujours 0 ?

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2011
    Messages : 34
    Par défaut
    En fouillant un peu partout j'ai fini par trouver la solution :

    - il faut ajouter setlocal ENABLEDELAYEDEXPANSION

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @echo off
    cls
    setlocal ENABLEDELAYEDEXPANSION
    
    set EXT1=.tex
    set EXT2=.bat
    set EXT3=.bib
    set $switch=0
    
    for /f "delims=" %%a in ('dir /b') do ( set $switch=0
                                            if %%~xa == %EXT1% set /A $switch=!$switch! + 1
    					if %%~xa == %EXT2% set /A $switch=!$switch! + 1
    					if %%~xa == %EXT3% set /A $switch=!$switch! + 1
    										
    					if !$switch!==0 del /Q %%a
                                          )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Shell] Supprimer tous les fichiers sauf XX et YY
    Par Invité dans le forum Linux
    Réponses: 9
    Dernier message: 25/07/2007, 10h37
  2. copier tous les fichiers sauf les dossiers
    Par chicho dans le forum VBScript
    Réponses: 6
    Dernier message: 06/09/2006, 16h58
  3. Réponses: 3
    Dernier message: 22/05/2006, 17h00
  4. [VBA Excel] supprimer tous les onglets sauf un
    Par drinkmilk dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/11/2005, 18h11
  5. Réponses: 4
    Dernier message: 24/09/2004, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo