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 :

Batch Script DOS : En parcourant l'arborescence de mon disque, lister tous les fichiers qui se répétent


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Batch Script DOS : En parcourant l'arborescence de mon disque, lister tous les fichiers qui se répétent
    Bonjour,

    Je débute dans les batch dos, et j'ai une requête à faire, il s'agit de lister tous les noms de fichiers qui se répètent, par exemple, j'ai cette arborescence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dossier 1
        ss dossier 1_1
             Fichier1
             Fichier2
        ss dossier 1_2
             Fichier3
             Fichier1
    Dossier 2
            Fichier2
        ss dossier 2_1
             Fichier2
             Fichier1
    J’aimerais faire un batch qui me permette de tester si un fichier existe (au moins une fois) dans un autre emplacement de mon arborescence, et de récupérer le nom de ce fichier, dans notre par exemple avoir :

    Fichier1
    Fichier2

    Merci,

  2. #2
    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
    Hum je dirais :

    1. Lister l'ensemble des fichiers avec un dir bien paramétré.
    2. Parcourir cette liste, pour chaque fichier faire un find /C du nom du fichier dans la liste.
    3. Si le nombre renvoyé est supérieur à 1 ecrire le nom du fichier dans ton fichier de résultat.
    4. Pour éviter les doublons tu peux réécrire ta liste avec un find /V
    Bon courage.
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2011
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci c'est très gentil , j'ai fait un Dir /s >> files.txtdans ce fichier j'ai listé tous les fichiers de mon répertoire --> OK
    Après j'ai construit un petit batch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo on
    
    setlocal ENABLEDELAYEDEXPANSION 
    set file=null
    for /f "" %%z in (files.txt) do (
    	set file=%%z	
    	FOR /F "tokens=1,2* delims=: " %%A IN ('FIND /C "!file!" files.txt') DO (
    		IF %%C GTR 1 (
    			echo !file! >> find.txt
    			ECHO Nombre d'occurences: %%C 
    		)
    	)
    )
    Sauf que à chaque fois je lance ce batch ma machine se plante, je ne sais pas s'il y a une erreur quelque part, ou bien parce que mon fichier files.txt contient des milliers de fichiers...

  4. #4
    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
    Voici un correction de ton script :

    @echo off

    setlocal ENABLEDELAYEDEXPANSION
    Dir /s/b > files.txt

    for /R %%z in (*.*) do (

    FOR /F "tokens=1,2* delims=: " %%A IN ('FIND /C "%%~nxz" files.txt') DO (

    IF %%C GTR 1 (
    echo %%~nxz >> find.txt
    ECHO Nombre d'occurences: %%~nxz : %%C
    )
    )
    )
    Pour l'instant le script t'affiche bien les doublons à l'écran avec le nombre d'occurences.
    Il te reste l'étape 4 (et l'initialisation de find.txt car la tu vas completer ton fichier à chaque fois).
    Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

    La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

    (\ _ /)
    (='.'=)
    Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant

  5. #5
    Membre éprouvé Avatar de gretch
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2006
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 165
    Points : 1 250
    Points
    1 250
    Par défaut
    Bonjour,
    Sache que de nombreux logiciels font déja cela, est tu sure de vouloir le codé toi meme ?

    Si c'est sur qq postes utilise du tout fait gratuit, si tu fait ça pour du gros volume, achete une licence pro doublekiller (20€) elle supporte les arguments ligne de commande contrairement à la version gratuite.
    voir : doublekiller et mon meilleur ami Google

Discussions similaires

  1. Script batch trouver tous les fichiers de plus de X taille
    Par quietman dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 15/02/2011, 08h59
  2. Script Shell : lister tous les fichiers d'un répertoire et sous rép
    Par raton_laveur dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 22/01/2009, 16h43
  3. Réponses: 3
    Dernier message: 25/06/2008, 21h59
  4. [DOS] Listez tous les fichiers
    Par boux2 dans le forum Scripts/Batch
    Réponses: 14
    Dernier message: 06/04/2007, 17h21
  5. Réponses: 3
    Dernier message: 03/02/2006, 23h31

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