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 :

suppression dossiers avec condition


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut suppression dossiers avec condition
    Bonjour à tous. Je viens vers vous car j'ai un problème de Batch.
    Voilà je voudrais écrire un script de suppression. J'ai commencé mais ça beug...
    En fait j'ai une arborescence du type (x étant un chiffre):
    Test
    -xxx
    -blabla
    -xxx_xxxxxx
    -xxx_xxxxxx
    -xxx_xxxxxx
    -xxx
    -xxx_xxxxxx
    -xxx_xxxxxx
    -xxxx

    Donc j'aimerais parcourir Test, parcourir les dossiers "xxx" si à l'intérieur se trouve un dossier xxx_xxxxxx on le garde si il yen a plusieurs on garde le plus récent et on supprime les autres et si il y en a pas on garde ce qui s'y trouve.

    J'ai fait un truc du genre mais ça ne fonctionne pas au niveau du echo (qui est un test avant de supprimer) j'ai une erreur la commande n'est pas reconnue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    echo off 
    setlocal enabledelayedexpansion
    cls
    for /f "delims=" %%a in ('dir /AD /B "C:\Users\moi\Desktop\Test\" ^|findstr /i /r "[0-9][0-9][0-9]"') do (
      
    for /f "delims=" %%x in ('dir /OD /AD /B "C:\Users\moi\Desktop\Test\%%a\" ^|findstr /i /r "[0-9]\_"') do set mostRecent=%%x 
    for /f "delims=" %%i in ('dir /AD /B "C:\Users\moi\Desktop\Test\%%a\" ^|findstr /i /r "[0-9]\_"') do if not %%i == %mostRecent% echo 
    coucou 
    rem rmdir C:\Users\moi\Desktop\Test\%%a\%%i /s /q
    
    )
    endlocal
    pause
    Voilà si quelqu’un pouvait m'aider je lui en serait reconnaissant. Merci.

    Cordialement,
    Chewby79

  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 ça serait pas plus simple de faire dans ta premiere boucle un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "delims=" %%a in ('dir /AD /B /S
    et faire le test . Ca t'éviterait les 2 autres boucles

    Amicalement

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut
    Salut, merci de ton aide.
    J'ai bien essayé cette solution mais je n'arrive pas a faire le test du plus récent ensuite....

    Cordialement,
    Chewby79

  4. #4
    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
    Tu peux donner un exemple en clair pour que l'on comprenne exactement ce qu'il te faut.

    Amicalement

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut
    Bonjour,
    après des jours de recherches et de tapage de tête. J'ai avancé.

    En fait j'ai un dossier test dans lequel il existe des dossiers du type "123" "789" ou "852" ou même "1042", je veux rentré dans chacun de ses dossiers. Une fois dedans regarder si il existe des dossiers du type "123_478963" si oui les supprimer sauf le plus récent. Sinon regarder si il n'y a pas un dossier du type "789" ou "123", rentré à l'intérieur et supprimer les dossiers du type "123_478963".

    J'ai tout sauf la dernière partie.
    voila mon code pour le script 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo off
    cls
    for /f "delims=" %%a in ('dir /AD /B "%cd%" ^|findstr /i /r "[0-9][0-9][0-9]"') do (
     cd %%~fa
     call ../scriptdeux.bat
     cd ..
    )
    echo terminé...
    pause

    script 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo off
    for /f "delims=" %%x in ('dir /OD /AD /B "." ^|findstr /i /r "\_" ') do set mostRecent=%%x 
    for /f "delims=" %%i in ('dir /AD /B "." ^|findstr /i /r "\_"') do ( if not %%i == %mostRecent% set rmdir /s /q %%~fi
    Cordialement,
    Chewby79

Discussions similaires

  1. [XL-2003] Macro suppression ligne avec condition 3 mots
    Par jenifer699 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/08/2012, 17h45
  2. [XL-2003] Recherche et suppression ligne avec condition
    Par jeromeph75 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/05/2011, 10h31
  3. suppression dossier avec condition suivant nom des dossiers
    Par rastacouaire dans le forum VBScript
    Réponses: 2
    Dernier message: 02/11/2010, 12h53
  4. [MySQL] Problème suppression valeur avec condition
    Par stefsas dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/02/2010, 03h40
  5. [AC-2000] Suppression ligne avec conditions sur deux tables
    Par Loufink dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 09/07/2009, 11h38

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