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

Windows Discussion :

[Batch] Utilisation de la commande "dir"


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut [Batch] Utilisation de la commande "dir"
    Bonjour à tous,

    Voilà actuellement je tente de faire un script capable d'effacer le premier fichier affiché par la commande "dir", mais je ne parviens pas à trouver la bonne syntaxe; Voici le code que j'ai généré, pour le moment il efface tous les fichiers présents dans le dossier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
    
    setlocal
    for /f %%a in ('dir /b/o-n "E:\Save Database"') do call :début %%a
    endlocal
    goto:eof
    :début
    set Nom1=%1
    
    del "E:\Save Database\%Nom1%"
    pause
    P.S : j'espère ne pas m'être trompée de section de forum, sinon veuillez m'en excuser

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Salut,

    tout d'abord, proscris les étiquettes avec des accents. Remplace "début" par "debut".

    Ensuite, mets un juste avant de faire le delete. Poste nous ici le résultat (i.e. le contenu de Nom1).

    Karl.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    Ok, j'ai fait la modif, voilà ce que j'obtient :




    En fait il efface donc les fichiers un à un.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Salut,

    nous ce qu'on veut en fait, c'est qu'il exécute le delete uniquement pour la première occurence de la boucle for.

    A ma connaissance, il n'existe pas de commande break pour la boucle for en batch qui permettrait d'interrompre l'exécution de la boucle.

    Une solution consisterait à mettre un juste après le del. Ainsi la boucle for ne pourra pas continuer.

    Pour une solution 'plus jolie', y a-t-il un moyen d'identifier ce premier fichier ? (un nom, une caractéristique... ?). Ca permettrait une solution plus élégante et te permettrait de rajouter des commandes à la suite du batch, ce que ne permet pas le palliatif exit.

    Karl.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    En fait les fichiers sont renomés avec la date où ils sont sauvegardés, il faudrait donc pour un type de fichier effacer le plus ancien donc celui qui a dans son nom la plus ancienne date. Dans l'exemple ci dessus il y a 2 types :

    -pharma95_%date%.mdb
    -phar_tab_%date%.mdb

    La fonction dir me permettait de les classer par ordre croissant, du coup j'obtenais en première ligne le fichier à effacer.

  6. #6
    Membre émérite Avatar de Drizzt [Drone38]
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2004
    Messages
    1 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur de projet

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 001
    Points : 2 453
    Points
    2 453
    Par défaut
    Salut,

    Tu peux utiliser cette feinte la:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    REM Ecriture de la liste des fichiers dans un fichier temporaire
    dir /B /O-N "E:\Save Database" > tmp.txt
    
    REM Mémorisation dans la variable d'environnement du premier fichier
    set /P Fichier= < tmp.txt
    
    del %Fichier%
    del tmp.txt

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 35
    Points : 29
    Points
    29
    Par défaut
    ça marche très bien, problème résolu, Merci beaucoup
    voici le code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off
    
    REM Ecriture de la liste des fichiers dans un fichier temporaire
    dir /B /O-N "E:\Save Database\*.mdb" >tmp.txt
    
    REM Mémorisation dans la variable d'environnement du premier fichier
    set /P Fichier= < tmp.txt
    
    del "E:\Save Database\%Fichier%"
    del tmp.txt
    Madoka

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

Discussions similaires

  1. Batch - Erreur d'utilisation de la commande ncftpget
    Par koKoTis dans le forum Internet
    Réponses: 1
    Dernier message: 16/08/2006, 16h33

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