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 :

Recherche documents puis copie avec nom du dossier


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Par défaut Recherche documents puis copie avec nom du dossier
    Bonjour à tous !
    Dans le cadre de ma nouvelle fonction je dois faire un petit fichier batch.
    • Celui-ci parcours les dossiers et sous-dossiers à la recherche d'un fichier.
    • Si celui est trouvé, il copie dans un dossier, avec comme nom : nomdefichier_NomDossier.ext, donc avec le nom du dossier ou le fichier a été trouvé.


    Donc j'ai réussi a faire une partie qui fonctionne, c'est à dire parcourir les dossiers et trouve les fichiers.
    La partie qui me encore pose problème c'est de récupéré le nom du dossier et le concaténer avec le nom du fichier destination.

    Donc voici le code :
    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
    @echo off
    Rem Test parameters
    if "%1"=="" goto ErrorParameters
    if "%2"=="" goto ErrorParameters
    if "%3" NEQ "" goto ErrorParameters
    
    Rem Browse Dir And SubDir
    echo Copy %1 to %2
    
    mkdir %CD%\..\%2
    
    
    for /r "." %%i in (*.*) do if %%~nxi == %1 copy %%i %CD%\..\%2\%%~nxi
    
    
    goto :eof
    :ErrorParameters
    echo Wrong parameters (must be 2).
    Donc ce qu'il faudrait c'est récupérer le nom du dossier dans %%i et l'ajouter a %CD%\..\%2\%%~ni"ICI"%%~xi

    J'étais parti sur cette exemple, mais je n'arrive pas a assemblé les deux :
    http://stackoverflow.com/questions/2...st-folder-name


    Merci pour votre aide.

  2. #2
    Membre chevronné

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Billets dans le blog
    1
    Par défaut
    "Donc ce qu'il faudrait c'est récupérer le nom du dossier dans %%i" => Si ce n'est que cela c'est facile, l'aide de la commande for te donne la solution :

    Extrait de l'aide de for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     %~I         - étend %I en supprimant les guillemets (")
     %~fI        - étend %I en nom de chemin d'accès reconnu
     %~dI        - étend %I en lettre de lecteur uniquement
     %~pI        - étend %I en chemin d'accès uniquement
     %~nI        - étend %I en nom de fichier uniquement
     %~xI        - étend %I en extension de fichier uniquement
     %~sI        - chemin étendu contenant uniquement des noms courts
     %~aI        - étend %I en attributs du fichier
     %~tI        - étend %I en date/heure du fichier
     %~zI        - étend %I en taille du fichier
     %~$PATH:I   - parcourt les répertoires de la variable
    La concatenation est on ne peux plus simple en batch, donc normalement tu ne devrais pas avoir de soucis. Sinon, il faut nous en dire plus (erreurs rencontrées par exemple)

  3. #3
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Par défaut
    En fait, j'avais déjà trouvé cette solution via ce guide :
    http://www.hotline-pc.org/batch.htm#0501

    Mais le soucis c'est que je veux uniquement le nom du dossier donc
    F:\Docs\Images\Chats\Bonjour.txt
    Je voudrais extraire : Chats de ma chaine.
    Oui la concaténation j'avais vu que ce n'était pas compliqué.

    Je ne sais pas comment faire, c'est dommage qu'il n'y ait pas de balise pour extraire le nom du dossier courant.

  4. #4
    Membre chevronné

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Billets dans le blog
    1
    Par défaut
    Le nom du dossier courant est contenu dans %CD%
    Le chemin d'un fichier est donnée par l'une des combinaisons de l'aide for, je ne comprends pas ou est ton soucis ?

  5. #5
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 13
    Par défaut
    Mon "for" parcourt les fichiers, et ma variable contient donc le chemin de mon fichier donc
    F:\Docs\Images\Chats\Bonjour.txt
    Par exemple
    De cette chaine je voudrais bien extraire "Chats"
    Et donc crée une copie de mon fichier qui s'appellera : Bonjour_Chats.txt.

  6. #6
    Membre chevronné

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Billets dans le blog
    1
    Par défaut
    Cadox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off& setlocal ENABLEDELAYEDEXPANSION& cd /d "%~dp0"& cls
    echo current full path : [!CD!]
    set FullPath=%CD%
    cd ..
    echo current path : [!FullPath:%CD%\=!]
    echo End of script & pause & exit

Discussions similaires

  1. FileCopy avec nom de dossier et document variable
    Par schmitx dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/12/2013, 10h55
  2. Recherche documents puis enregistrement
    Par Devilju69 dans le forum VB.NET
    Réponses: 5
    Dernier message: 02/07/2009, 13h56
  3. Recherche Onglet Puis copie et colle celui ci
    Par plasmadav dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/07/2007, 12h31
  4. comment changer nom du dossier apres documents and settings
    Par orientalys dans le forum Windows XP
    Réponses: 1
    Dernier message: 09/12/2005, 01h00
  5. Réponses: 2
    Dernier message: 26/09/2003, 15h54

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