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 :

Parcourrir une série de dossier/sous-dossier et copie de fichier selon une liste


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 7
    Par défaut Parcourrir une série de dossier/sous-dossier et copie de fichier selon une liste
    Bonjour,

    Un peu novice dans ce langage, j'aurai besoin de votre aide pour optimiser mon code

    Voici l'explication de mon de code:
    J'ai une liste de fichiers pdf (ListeDocMove.txt) à copier dans un répertoire (C:\Users\XXXXX\Desktop\PRO\ZZ_File).
    Les fichiers pdf se trouvent dans une multitude de dossier sous-dossier.

    Code Batch : 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
    21
    22
    23
    24
    25
    26
    @ECHO off
    	SET "srclist=F:\ListeDocMove.txt"
    	SET "targetdir=C:\Users\XXXXX\Desktop\PRO\ZZ_File"
    	SET "srcdir=F:\Projet\"
     
    FOR /f "delims=" %%f in ('type "%srclist%"') DO (
      	ECHO * Recherche du fichier "%%f", parcours des dossiers :
      	ECHO - "%srcdir%"
    	IF EXIST "%srcdir%\%%f" (
    	    ECHO Trouvé : "%srcdir%\%%f"
    	    COPY /y "%srcdir%\%%a" "%targetdir%"
       	) ELSE (
       		FOR /f "delims=*" %%d in ('dir /b /a:d /s "%srcdir%"') DO (
    		     ECHO - %%d
    		     IF EXIST "%%d\%%f" (
    		       ECHO Trouvé : %%d\%%f
    		       COPY /y "%%d\%%f" "%targetdir%">NUL
    		       IF ERRORLEVEL 1 (
    		         ECHO ECHEC !
    		       )
    		     )
       		)
      	)
    )
     
    Pause

    Pour optimiser mon code je voudrais que lorsqu'il trouve un fichier, il le copie et passe à un autre fichier sans continuer de parcourir tous les dossiers...
    J'ai tenté avec un goto :next mais je pense ne pas bien utilisé cette commande

    Code Batch : 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    @ECHO off
    	SET "srclist=F:\ListeDocMove.txt"
    	SET "targetdir=C:\Users\XXXXX\Desktop\PRO\ZZ_File"
    	SET "srcdir=F:\Projet\"
     
    FOR /f "delims=" %%f in ('type "%srclist%"') DO (
      	ECHO * Recherche du fichier "%%f", parcours des dossiers :
      	ECHO - "%srcdir%"
    	IF EXIST "%srcdir%\%%f" (
    	    ECHO Trouvé : "%srcdir%\%%f"
    	    COPY /y "%srcdir%\%%a" "%targetdir%"
                GOTO :Next
       	) ELSE (
       		FOR /f "delims=*" %%d in ('dir /b /a:d /s "%srcdir%"') DO (
    		     ECHO - %%d
    		     IF EXIST "%%d\%%f" (
    		       ECHO Trouvé : %%d\%%f
    		       COPY /y "%%d\%%f" "%targetdir%">NUL
                           GOTO :Next
    		       IF ERRORLEVEL 1 (
    		         ECHO ECHEC !
    		       )
    		     )
       		)
      	)
    :NEXT
    echo "suivant"
    )
     
    Pause

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Voici quelque chose de beaucoup plus optimiser mais ça reste très lent :

    Code batch : 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
    21
    22
    23
    24
    cls
    @echo off
     
    SETLOCAL ENABLEDELAYEDEXPANSION
     
    SET "srclist=F:\ListeDocMove.txt"
    SET "targetdir=C:\Users\XXXXX\Desktop\PRO\ZZ_File"
    SET "srcdir=F:\Projet\"
     
     
    FOR /f "usebackq delims=" %%f in ("%srclist%") DO (
      	ECHO * Recherche du fichier "%%f", parcours des dossiers :
      	ECHO - "%srcdir%"
     
    	set fpath=
    	FOR /f "delims=" %%d in ('dir /b /a:-d /s "%srcdir%%%f" 2^>nul') do set "fpath=%%~d"
     
    	if defined fpath (
    		echo Trouve : !fpath!
    		COPY /y "!fpath!" "%targetdir%" >NUL
    	) else (echo ECHEC !)
    	echo.
    )
    pause

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Si tu veux quelques chose de beaucoup plus optimisé je te conseil ceci, mais tu n'aura plus les erreurs.

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    cls
    @echo off
     
    SET "srclist=F:\ListeDocMove.txt"
    SET "targetdir=C:\Users\XXXXX\Desktop\PRO\ZZ_File"
    SET "srcdir=F:\Projet\"
     
    FOR /f "delims=" %%d in ('dir /b /a:-d /s "%srcdir%"^| findstr /E /I /G:"%srclist%"') do (
    	echo Trouve : %%~d
    	COPY /y "%%~d" "%targetdir%" >NUL
    )
    pause

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Tout ceci reste du batch donc tu ne fera pas les 24 heures du mans avec ta twingo

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 7
    Par défaut
    Merci beaucoup pour votre aide, je vais tester ça cette après-midi!
    Il y a vachement moins de code déjà!

    Cette partie de code pourra déjà me faire gagner un peu de temps, celui qu'il parcourait pour rien car il avait déjà trouvé le fichier

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    celui qu'il parcourait pour rien
    Pas forcement, tu peux avoir plusieurs fichiers avec le même nom à des endroits différents

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/11/2018, 15h37
  2. [XL-2007] Faire une liste récursive des dossiers et sous-dossiers avec changements de couleurs
    Par YAKYETI dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/01/2017, 12h52
  3. Réponses: 3
    Dernier message: 15/05/2007, 10h05
  4. OpenDialog avec une liste des dossiers favories
    Par J_apprenti dans le forum Delphi
    Réponses: 6
    Dernier message: 09/05/2007, 22h23
  5. Trier une liste de dossiers et de fichiers
    Par steveleg dans le forum Langage
    Réponses: 2
    Dernier message: 07/04/2006, 16h54

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