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 :

Tester si le nom de fichiers contiennent une chaine de caractéres dans une boucle for [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut Tester si le nom de fichiers contiennent une chaine de caractéres dans une boucle for
    Bonjour.
    Je n'ai visiblement rien compris des "cours" précédent.

    Je parcours un répertoire et souhaite copier le fichier qui contient une chaine de caractères :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    REM sources
    set REM_Folder="D:\Test_Package_2019_Package_REM"
    REM destination
    set Zip_Par_Serveur="D:\Test_Package_2019_Par_Serveur"
    set WAS_Folder="%Zip_Par_Serveur%\serveur_WAS"
     
     
    REM Partie de nom a chercher
    set Expl="EXPLOI"
     
    for /f %%a in (%REM_Folder%\*) do (
    	if not x%%a:%Expl%==x%%a copy %%F %WAS_Folder%\%Expl%.zip  >> %logs%
    	)

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Salut,

    Je vois plusieurs erreurs :

    - les paramètres de la boucle FOR
    - la substitution via la variable de boucle
    - le choix d'utiliser IF
    - potentiellement les double-quotes autour de la chaîne à rechercher
    - potentiellement les double-quotes autour des variables
    - à quoi correspond la variable %%F ???

    Si les fichiers à parcourir sont des fichiers zip je pense qu'il faudra les dézipper avant de pouvoir regarder à l'intérieur.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Citation Envoyé par barnabe0057 Voir le message
    Salut,

    Je vois plusieurs erreurs :

    - les paramètres de la boucle FOR : aïe, aïe, aïe!
    - la substitution via la variable de boucle : Ca c'est que je n'ai pas compris
    - le choix d'utiliser IF
    - potentiellement les double-quotes autour de la chaîne à rechercher
    - potentiellement les double-quotes autour des variables
    - à quoi correspond la variable %%F ??? J'enlève, c'est un reliquat de mes tests

    Si les fichiers à parcourir sont des fichiers zip je pense qu'il faudra les dézipper avant de pouvoir regarder à l'intérieur : Je parcours un répertoire qui contient des zip et je cherche ceux qui ont dans leur nom la chaine de caractéres "EXPLOI" pour les copier.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Ah ok il s'agit de rechercher dans le nom du fichier, je comprends mieux.

    Voilà comment je ferais :

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    REM sources
    set "REM_Folder=D:\Test_Package_2019_Package_REM"
    REM destination
    set "Zip_Par_Serveur=D:\Test_Package_2019_Par_Serveur"
    set "WAS_Folder=%Zip_Par_Serveur%\serveur_WAS"
     
     
    REM Partie de nom a chercher
    set "Expl=EXPLOI"
     
    for %%A in ("%REM_Folder%\*.zip") do (
    	echo %%~nA | findstr /LIC:"%Expl%" >nul && copy "%%~fA" "%WAS_Folder%\%Expl%.zip" >> %logs%
    )

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Balèze, ça marche...

    Je laisse ouvert, je vais avoir des questions :

    Je ne comprends ni le echo, ni le ~a
    non plus
    non plus

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Concernant les variables de substitution de la boucle FOR : admettons que tu as une variable %%I qui vaut toto.zip, pour récupérer le chemin du fichier tu peux faire appel à la variable %%~dpI

    Voilà les valeurs que tu peux utiliser :

    %~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
    d’environnement PATH et étend %I en nom du
    premier fichier reconnu trouvé. Si le nom de la
    variable d’environnement n’est pas défini ou
    que le fichier n’est pas trouvé par la recherche,
    alors ce modificateur étend en chaîne vide
    Donc pour récupérer uniquement le nom du fichier j'ai utilisé %%~nA, que j'ai transmis à FINDSTR via un echo et un pipe

    Pareil pour la commande copy, j'avais besoin du chemin complet incluant le nom et l'extension du fichier, j'ai donc utilisé %%~fA qui est équivalent à %%~dpnxA

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Points : 336
    Points
    336
    Par défaut
    Bravo et merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Parcours de fichier depuis une boucle for dans un fichier batch exécuté par vba
    Par Airahn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/07/2020, 09h26
  2. Compter des fichiers avec une boucle for
    Par DienF dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 27/04/2020, 23h42
  3. Utiliser les noms de colonne pour une boucle for
    Par RémiCA33 dans le forum R
    Réponses: 2
    Dernier message: 01/07/2010, 09h52
  4. script batch - récupération d'un nom de fichier
    Par persam dans le forum Windows
    Réponses: 1
    Dernier message: 19/07/2007, 10h45
  5. Réponses: 4
    Dernier message: 01/08/2006, 08h34

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