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 :

différencier des noms de fichiers


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    architecte
    Inscrit en
    Avril 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : architecte
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2016
    Messages : 38
    Points : 19
    Points
    19
    Par défaut différencier des noms de fichiers
    Bonjour à vous,

    Tout nouveau sur ce forum et ne travaillant pas dans le domaine de la programmation (Architecte), Je viens quérir votre aide car je réalise un petit batch pour nettoyer des fichiers de sauvegarde et je rencontre une difficulté à différencier certain fichiers.

    la forme de l’appellation des fichiers : "ABCD0.0.0.RVT" qui est le fichier principal et "ABCD0.0.0.0000.RVT" qui est le fichier de sauvegarde intermédiaire.
    ABCD le nom du fichier
    0.0.0 la date du fichier (qui n'est pas présente dans toute les nommages)
    .0000 le numéro de sauvegarde intermédiaire
    .rvt l'extension

    je souhaite repérer et supprimer les fichiers de sauvegarde intermédiaires mais je n'arrive pas à les différencier des fichiers ayant juste une date.

    pour l'instant mon batch se présente ainsi:

    Code bat : 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
    17
    18
    19
    20
    @echo off
    set TOTAL=0
    set NB=0
    for /r  %%X in (*.0*.rvt) do (
    	echo %%~nX
    	set /a NB+=1
    	set /a TOTAL+=%%~zX / 1000000
    )
    echo nombre de fichier de sauvegarde    : %NB%
    echo Taille totale : %TOTAL% Mo
    set /p choix=Voulez vous vraiment effacer ces fichiers(O/N) ? :
     
    if /I "%choix%"=="O" (goto :oui)
    if /I "%choix%"=="N" (goto :non)
     
    :oui
     echo SUPRESSION DES FICHIERS
     del /s *.0*.rvt
    :non
     goto :EOF


    Étant assez léger en programmation, je ne vois pas comment réussir ...

    merci d'avance pour vos retours

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Bonjour à toi,
    Afin d'être sur du format précis pourrais tu mettre quelques vrais non de fichiers ?
    ABCD, est-ce que c'est toujours sur 4 ? Ou ça peut être plus ?
    La date 0.0.0 j'imagine que c'est en fait genre 01.10.16 ?

    Bref avec des vrais valeurs ça permettrai de faire un filtre regex plus précis
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  3. #3
    Membre à l'essai
    Homme Profil pro
    architecte
    Inscrit en
    Avril 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : architecte
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2016
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    c'est vrai que de vrais noms seront plus parlant

    TARBES Phases 09.03.16.rvt
    TARBES Phases 09.03.16.0012.rvt
    NANCY APS.rvt
    NANCY APS.0002.rvt
    NANCY APS V2.rvt
    etc...
    donc pour répondre à tes interrogations,
    la partie alphabétique n'est jamais de même taille,
    le format de date est tel que tu le décris, mis à par qu'elle n'est pas présente dans tout les cas
    le numéro de sauvegarde intermédiaire est toujours basé sur 4 chiffres.

    Cordialement,

  4. #4
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ah en effet c'est mieux !
    Alors je te propose ceci :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    dir /s/b | findstr /i /r "\.[0-9][0-9][0-9][0-9]\.rvt$"
    Confirme moi que que ca te liste bien QUE les fichier intermédiaire que tu souhaites supprimer

    L'idée est celle que tu à tenté au départ mais qui n'est pas faisable comme tu le pensait
    On liste les fichier qui répondent au format *.0000.rvt

    Du coup pour supprimer après :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR /f "usebackq delims=" %i IN (`dir /s/b ^| findstr /i /r "\.[0-9][0-9][0-9][0-9]\.rvt$"`) DO DEL "%i"

    Attention dans un fichier batch il faut doubler les %%:
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR /f "usebackq delims=" %%i IN (`dir /s/b ^| findstr /i /r "\.[0-9][0-9][0-9][0-9]\.rvt$"`) DO DEL "%%i"

    Je vais mettre ça de côté, on commente tout juste à bosser avec Revit dans ma boite (metallerie/serrurie) mais ça va finir par me servir

    PS : Penser à quand les réponses te conviennent
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  5. #5
    Membre à l'essai
    Homme Profil pro
    architecte
    Inscrit en
    Avril 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : architecte
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2016
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    je test ça et je reviens te dire ce qu'il en est

  6. #6
    Membre à l'essai
    Homme Profil pro
    architecte
    Inscrit en
    Avril 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : architecte
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2016
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    cette commande fonctionne donc très bien. merci à toi !

    challenge supplémentaire : comment effectuer en plus une recherche des fichiers contenant la chaîne "obsolete". peut on rajouter cette recherche dans le même dir ou faut-il créer une commande supplémentaire.

    cordialement,

  7. #7
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Pffff les regex de FINDSTR étant super limité il faut en effet une autre recherche.
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    dir /s/b | findstr /i "obsolete"
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  8. #8
    Membre à l'essai
    Homme Profil pro
    architecte
    Inscrit en
    Avril 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : architecte
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2016
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    et bien tout fonctionne superbement.
    merci pour ce code

    j'essai d'apprendre le fonctionnement de usebackq delims du coup

  9. #9
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Pour les explication usebackq et delim : http://ss64.com/nt/for_cmd.html
    En fait usebackq sert pour les chemin et nom de fichier qui aurait des espaces, cela permet de les placer entre quotes.
    Et delim également, car par défaut le délimiteur est espace, donc on obtient qu'un seul morceau du nom et il faut alors utiliser plusieurs variables.
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

Discussions similaires

  1. Créer une liste avec des noms de fichiers
    Par Jeffboj dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 05h48
  2. Récupérer des noms de fichiers dans une table ?
    Par florus dans le forum Access
    Réponses: 5
    Dernier message: 25/03/2006, 17h34
  3. Supprimer les espaces des noms de fichier
    Par Cathy dans le forum Linux
    Réponses: 20
    Dernier message: 04/08/2005, 17h13
  4. récupérer des nom de fichiers en utilisant *.ext
    Par drinkmilk dans le forum ASP
    Réponses: 11
    Dernier message: 15/12/2004, 09h21
  5. Réponses: 4
    Dernier message: 10/10/2003, 18h04

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