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 :

Copier-coller des fichiers à partir d'un listing.txt


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Gizmil
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Par défaut Copier-coller des fichiers à partir d'un listing.txt
    Salut,

    Je me permet de venir ici chercher un peu d'aide, en espérant que vous pourrez m'aider à surmonter mon souci !

    A noter : je n'ai aucune connaissance dans le domaine de la programmation batch. Moi, mon secteur concernant la programmation, c'est l'AS et PHP (et encore, je balbutie).

    Mais je fais de gros travaux de composition à partir de listes de photos et j'essaye de trouver des astuces afin d'améliorer mon temps de travail alors je me suis dis que vous pourriez peut-être me donner un petit coup de pouce ?

    Voilà, régulièrement, je dois faire cette manipulation : j'ai un ensemble de plusieurs milliers de fichiers jpg dans un dossier que je nommerais "dossier A". A côté de ça, dans un txt, j'ai une liste de 300 noms de fichiers jpg. Celle liste m'indique les fichiers à sélectionner dans mon dossier A afin de les isoler dans un dossier vierge que je nommerais "dossier B".

    La sélection manuelle des mes fichiers jpg dans le dossier A pouvant parfois prendre beaucoup de temps, je me demandais si quelqu'un ne pourrait pas m'indiquer un petit script qui me permettrait d'aller chercher ces fichiers-là automatiquement dans mon dossier A en s'appuyant sur la liste dont je dispose pour aller ensuite les coller dans le dossier B ?

    PS : A moins qu'il existe des logiciels qui permettent ce genre de manipulation ?

    Le souci : la plupart du temps, je ne dispose pas du nom entier des fichiers à sélectionner dans le dossier. Habituellement, j'ai une liste de ce type :

    5486
    2563
    7894
    1235
    4256

    et les fichiers à sélectionner sont sous cette forme :

    IMG_5486.JPG
    IMG_2563.JPG
    IMG_7894.JPG
    IMG_1235.JPG
    IMG_4256.JPG

    Est-il possible de faire qqch pour moi ? Y a t-il une solution pas trop complexe à réaliser ?

    En tous les cas, merci d'avance pour l'aide que vous pourrez m'apporter !

  2. #2
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Salut,

    Essaye de faire un début de script en t'aidant des commandes/instructions "for" "dir" "findstr". Tu peux utilement te référer au cours en ligne et à la FAQ pour cela (conf épinglés).

  3. #3
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 223
    Par défaut
    salut,

    quelque chose dans ce genre peut-être:

    Code : 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
    @echo off
    
    echo ------------------
    echo Copie de fichiers
    echo ------------------
    echo.
    
    set chemin_dossier_A=C:\Users\gizmil\DOSSIERA
    set chemin_dossier_B=C:\Users\gizmil\DOSSIERB
    
    for /f %%i in (liste.txt) do (
    	if not exist "%chemin_dossier_B%\IMG_%%i.jpg" (
    		xcopy "%chemin_dossier_A%\IMG_%%i.jpg" "%chemin_dossier_B%\" /s/e/i/f >nul 2>&1
    		if %errorlevel% EQU 0 (
    			echo Fichier IMG_%%i.jpg OK
    		) else (
    			echo Impossible de copier le fichier IMG_%%i.jpg
    		)
    	) else (
    		echo Le fichier IMG_%%i.jpg est deja present dans le répertoire cible
    	)
    )
    
    echo.	
    PAUSE
    A noter que ce fichier batch doit etre dans le meme repertoire que le fichier liste.txt listant les fichiers à copier...

  4. #4
    Membre confirmé Avatar de fabrice.s
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 120
    Par défaut
    Citation Envoyé par ludo40190 Voir le message
    salut,

    quelque chose dans ce genre peut-être:

    Code : 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
    @echo off
    
    echo ------------------
    echo Copie de fichiers
    echo ------------------
    echo.
    
    set chemin_dossier_A=C:\Users\gizmil\DOSSIERA
    set chemin_dossier_B=C:\Users\gizmil\DOSSIERB
    
    for /f %%i in (liste.txt) do (
    	if not exist "%chemin_dossier_B%\IMG_%%i.jpg" (
    		xcopy "%chemin_dossier_A%\IMG_%%i.jpg" "%chemin_dossier_B%\" /s/e/i/f >nul 2>&1
    		if %errorlevel% EQU 0 (
    			echo Fichier IMG_%%i.jpg OK
    		) else (
    			echo Impossible de copier le fichier IMG_%%i.jpg
    		)
    	) else (
    		echo Le fichier IMG_%%i.jpg est deja present dans le répertoire cible
    	)
    )
    
    echo.	
    PAUSE
    A noter que ce fichier batch doit etre dans le meme repertoire que le fichier liste.txt listant les fichiers à copier...

    Très joli code,
    je trouve bien d'avoir pensé a vérifier la présence du fichier et vérifier le bon déroulement de la copie.
    je me permettrai juste de faire un petit complément, en améliorant la flexibilité du code ainsi qu'en éditant un rapport imprimable.

    Code : 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
    31
    32
    33
    34
    35
    @echo off
    
    echo ------------------
    echo Copie de fichiers
    echo ------------------
    echo.
    
    rem --- on vient chercher dans un fichier config.ini les information
    rem --- concernant les dossier A B chemin du fichier txt et du rapport
    
    for /f "tokens=1,2 delims==" %%i in ('findstr /b /c:"chemin_dossier_A=" config.ini') do set chemin_dossier_A=%%j
    for /f "tokens=1,2 delims==" %%i in ('findstr /b /c:"chemin_dossier_B=" config.ini') do set chemin_dossier_B=%%j
    for /f "tokens=1,2 delims==" %%i in ('findstr /b /c:"chemin_fichier_txt=" config.ini') do set chemin_fichier_txt=%%j
    for /f "tokens=1,2 delims==" %%i in ('findstr /b /c:"chemin_rapport_txt=" config.ini') do set chemin_rapport_txt=%%j
    
    rem --- on a rajouter le chemin pour le fichier liste.txt
    rem --- on rajoute l'enregistrement dans le rapport.txt
    
    for /f %%i in (%chemin_fichier_txt%\liste.txt) do (
    	if not exist "%chemin_dossier_B%\IMG_%%i.jpg" (
    		xcopy "%chemin_dossier_A%\IMG_%%i.jpg" "%chemin_dossier_B%\" /s/e/i/f >nul 2>&1
    		if %errorlevel% EQU 0 (
    			echo Fichier IMG_%%i.jpg OK >>%chemin_rapport_txt%\rapport.txt
    		) else (
    			echo Impossible de copier le fichier IMG_%%i.jpg >>%chemin_rapport_txt%\rapport.txt
    		)
    	) else (
    		echo Le fichier IMG_%%i.jpg est deja present dans le répertoire cible >>%chemin_rapport_txt%\rapport.txt
    	)
    )
    
    rem --- on ouvre le rapport.txt
    
    start %windir%\system32\notepad.exe %chemin_rapport_txt%\rapport.txt

    dans le fichier config.ini on va mettre ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    chemin_dossier_A=c:\photos
    chemin_dossier_B=c:\photos_triées
    chemin_fichier_txt=c:\
    chemin_rapport_txt=c:\

    On pourrait même se permettre de mettre dans le code quelques ligne demandant le chemin des différents dossiers, plutôt que de les inscrire dans un fichier config.ini

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    set /p chemin_dossier_A=%sChoice% Chemin Dossier A:
    set /p chemin_dossier_B=%sChoice% Chemin Dossier B:
    set /p chemin_fichier_txt=%sChoice% Chemin Fichier Listing:
    set /p chemin_rapport_txt=%sChoice% Chemin Fichier Rapport:
    Et voila.
    En espérant avoir répondu a tes attentes.

    Bonne journée

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Photographe
    Inscrit en
    Mai 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Photographe
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2020
    Messages : 8
    Par défaut
    Hello hello
    Je suis confus d'être aussi débutant (et de ne pas avoir encore pris le temps de me présenter...) mais voici ma petite requête.
    J'ai repris les différentes versions de fichier batch pour les utiliser : c'est exactement ce que je cherchais à faire. Et cela va me faire gagner un temps fou.
    Je suis photographe pour des maisons de ventes aux enchères et je m'occupe de mettre les ventes en ligne.
    Toutes mes photos sont rangées dans un photothèque sur un NAS avec une nomenclature du type : 1234-56.jpg
    Lorsque je recois le fichier de la vente, une des colonne nomme la photo et je dois aller les chercher dans la base pour la mise en ligne.
    Avec un fichier batch, il devient inutile de le faire à la main et mieux, j'ai un rapport des manquants.
    Nom : Capture.JPG
Affichages : 2171
Taille : 203,5 Ko
    j'ai donc commencé par utiliser le fichier de gauche, version où il faut renseigner les différents chemins avant le lancer.
    Miracle, cela fonctionne
    Puis je me suis dit que ma source étant toujours la même et que mon dossier de fichiers extraits pouvait aussi toujours être le même, je pouvais utiliser le fichier à droite sur la capture (et son fichier config.ini)
    Et la, cela ne marche plus. La lecture de la liste est bonne mais la copie ne se fait pas...
    J'ai raté un truc ?
    Autre question annexe : il arrive que pour un même objet, j'ai plusieurs photos qui ont alors la nomenclature 1234-56 (1).jpg ou encore 1234-56_1.jpg
    Comment faire pour que ces fichiers soient aussi extraits ?

    Mille mercis pour vos précieux éclairages... Je vous l'ai dit, je débute (mais en général j'apprends vite...)

  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
    Gizmil = maxipadfrombagdad ?

Discussions similaires

  1. [XL-2010] Macro pour renommer des fichiers à partir d'une liste de nom de fichiers
    Par thomahh dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/01/2013, 17h03
  2. Copier-coller des fichiers à partir d'un listing.txt
    Par Gizmil dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 21/09/2011, 15h23
  3. Copier/coller des informations à partir d'une boucle
    Par BOU59000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2009, 09h21
  4. Copier/coller des fichiers d'un dossier à un autre.
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/01/2009, 09h00
  5. Réponses: 3
    Dernier message: 10/01/2008, 10h12

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