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 :

Fichier dans dossier avec regex comparer contenu de ce dossier avec le nom dans un fichier


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut Fichier dans dossier avec regex comparer contenu de ce dossier avec le nom dans un fichier
    Bonjour la communauté,

    Je vous sollicite car je désirerai écrire un script mais j'éprouve de grandes difficultés du fait que je débute.

    Présentation du sujet :
    - 1 un répertoire ARBUSTE
    - 2 dans ce répertoire un dossier nommé 20220509153020_ARBUSTE et dans lequel celui-ci contient des fichiers avec extensions de toutes sortes (ex: .doc .csv .pdf etc etc).
    - 3 dans le répertoire ARBUSTE un fichier nommé fichiers_des_donnees dans lequel la liste des fichiers du dossier ci-dessus apparaît mais avec des regex parfois et timestamp toujours.

    Problématique :

    Je souhaiterai que le script puisse analyser le contenu du dossier 20220509153020_ARBUSTE et comparer le contenu de ce dossier en particulier le nom des fichiers avec le contenu du fichier_des_donnees et ainsi dire s'il existe des erreurs ou non. La complexité réside surtout dans le fait que dans le listing que contient ce fichier_des_donnees les noms comportent des regex et timestamp. Il faudrait que le script indique que les regex match bien si elles sont bien écrites et lorsqu'il y'en a et pareil pour les timestamp.
    ex avec le fichier dans le dossier 20220509153020_ARBUSTE : 2022052118003030_ARBUSTE_FICHE_POSTE_1234567890.pdf et le nom qu'il possède dans le fichiers_des_donnees YYYYmmddHHMMSS_ARBUSTE_FICHE_POSTE_[A-Za-z0-9]{10}.pdf

    Précision :

    il faut absolument que fichiers_des_donnees ne subissent aucune transformation car j'ai réalisé une macro avec vba qui me génère ce fichier .txt avec ce contenu.
    Il faut également que le contenu du dossier 20220509153020_ARBUSTE ne subissent aucune modification afin que je me rapproche au plus près de la réalité.
    Tous les noms indiqués ci dessus pour le répertoire, le dossier et son contenu et le contenu de fichiers_des_donnees varieront à chaque fois.


    Je vous remercie d'avance et m'excuse également pour les maux de crâne que je risque de provoquer. Pour ma part, c'est déjà le cas
    N'hésitez pas à me demander des éclaircissements dans mes explications.
    Fichiers attachés Fichiers attachés

  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
    Bonjour,

    Utilisons ton vocabulaire :
    Répertoire : ARBUSTE
    Dossier : ARBUSTE\20220509153020_ARBUSTE

    Tu veux donc savoir si chaque ligne (pattern "spécial") de "fichiers_des_donnees.txt" permette de trouver 1 fichier dans le Dossier ?

    - Si un fichier est présent dans le Dossier et n'est pas trouvé par un pattern est ce une erreur ?
    - Si un pattern match plusieurs fichiers est ce une erreur ?
    - Pas de vérification sur la conformité du nom de Dossier ?
    - Quelle type de "joker" sont utilisées ? Tout ceux d'une expression régulière ? Uniquement cette forme [A-Za-z0-9]{10} ?
    - De quelle langage est issue ce format de "timestamp" YYYYmmddHHMMSS ?
    Si j'en crois un format de référence en C# : https://docs.microsoft.com/fr-fr/dot...format-strings
    YYYY N'existe pas
    mm Minute, définie entre 00 et 59
    dd Jour du mois, de 01 à 31
    HH Heure, au format de 24 heures, de 00 à 23
    MM Mois, de 01 à 12
    SS N'existe pas

    Je te conseil clairement de faire ce script en PowerShell

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    Bonjour Eric,

    Merci d'abord pour ta réponse.

    Je dirai que c'est plutôt l'inverse. Ce sont les fichiers dans le dossier qui doivent correspondre aux noms des fichiers contenu dans fichiers_des_donnees car c'est la référence d'origine. Et par comparaison entre eux faire remonter :
    - un résultat correct ou non sur les noms de fichiers sans regex
    - des erreurs si les noms comportant des regex ne sont pas bons entre eux

    Penses tu que cela est faisable ? Si non tu me conseilles powershell mais la le problème est que je n'y connais absolument rien d'une part et d'autre part, je dois proposer cet outillage a des clients qui ne maîtriseront pas non plus powershell. Le batch un simple double clic permettra à mes clients d'obtenir un confort d'utilisation sans élévation particulière de droits sur leur machines. Je veux bien voir les propositions que tu peux me faire malgré tout avec un script powershell mais je ne suis pas sur que mes clients puissent le réutiliser derrière.

  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
    Les scripts PowerShell ne nécessitent pas plus d'élévation de privilège qu'un batch, néanmoins il sont plus sécurisés dans le sens ou il faut autoriser l'exécution des scripts sur le poste avant son lancement.
    Ils sont aussi et surtout bien plus fiable, puissant et facile à maintenir/lire. En batch ça sera une usine à gaz.

    Vérifie déjà si la solution via PowerShell est viable avant que nous investissions du temps sur un code.

    Certaines de mes questions restent encore sans réponse.

    Exemple de script PowerShell (hello.ps1) :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Write-Host "Hello World"
    Read-Host

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    Eric,

    D'accord je ne savais pas tout ca heureusement que tu es la pour me l'apprendre. Ca peut donc valoir le coup.
    Pour tes questions je vais essayer d'être le plus précis possible.






    Si un fichier est présent dans le Dossier et n'est pas trouvé par un pattern est ce une erreur ?
    Oui il faut que ce soit une erreur remontée. Seuls les fichiers présents dans "fichiers_des_donnees" ,qui est la référence, doivent être présents dans le dossier 20220509153020_ARBUSTE



    - Si un pattern match plusieurs fichiers est ce une erreur ?
    Je ne comprends pas trop mais grosso modo chaque fichier sera différent il ne peut y avoir de fichiers similaires donc pour moi oui ce sera une erreur


    - Pas de vérification sur la conformité du nom de Dossier ?
    Le nom du dossier sera créé par un autre script à partir d'un code vba. Cela peut être un bonus mais ceci n'est pas une nécessité dans mon cas. Il prendra toujours la forme d'un timestamp au début puis underscore puis un nom lambda ex : 20220509153020_ARBUSTE


    - Quelle type de "joker" sont utilisées ? Tout ceux d'une expression régulière ? Uniquement cette forme [A-Za-z0-9]{10} ?

    Je ne comprends pas le mot "joker". Ce que je peux dire c'est que les regex ne seront pas toujours les mêmes. Il serait idéal que les noms de fichiers qu'indiquera le client dans le dossier
    20220509153020_ARBUSTE puissent subir soit une transformation en fonction de la regex indiquée dans "fichiers_des_donnees" soit une vérification et dire si oui ou non il y a une erreur de renommage



    - De quelle langage est issue ce format de "timestamp" YYYYmmddHHMMSS ? Je ne sais pas du tout mais c'est une contrainte souhaitée et obligatoire dans le nommage des fichiers
    Si j'en crois un format de référence en C# : https://docs.microsoft.com/fr-fr/dot...format-strings
    YYYY N'existe pas il s'agit de l'année
    mm Minute, définie entre 00 et 59
    dd Jour du mois, de 01 à 31
    HH Heure, au format de 24 heures, de 00 à 23
    MM Mois, de 01 à 12
    SS N'existe pas il s'agit des secondes

    Le timestamp doit apparaître obligatoirement cela fait partie d'une contrainte de nommage des fichiers.

    J'espère avoir été plus précis dans mes réponses je débute vraiment en code donc si tu vois que je ne comprends pas tout ou que je réponds à coté de la plaque ne te fais pas de soucis. Merci encore du temps consacré.

  6. #6
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2018
    Messages : 129
    Par défaut
    Sinon,

    Si le fichier txt "fichiers_des_donnees" est une trop grosse contrainte, le script powershell devra être capable de comparer les fichiers contenus dans le dossier 20220509153020_ARBUSTE avec le nom des fichiers contenus dans une certaine plage de données dans mon excel (ex: toute la colonne D à partir de la cellule D6)
    Il faudra que le nommage des fichiers respectent celui de l'excel avec ses regex.

    Je n'ai pas non plus mentionné mais l'idéal serait que dans le script pour les chemins de fichiers et dossiers ils soient précisés par le client car le script sera fourni à divers clients qui ne travailleront pas tous sous le même chemin (ex : c:/user/desktop/dossier ou d:/mesdocument/dossier)

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/03/2013, 10h55
  2. Réponses: 5
    Dernier message: 12/03/2010, 11h03
  3. comparer contenu de deux fichiers
    Par Earl7 dans le forum Langage
    Réponses: 5
    Dernier message: 02/02/2009, 16h07
  4. Recuperer le contenu d'un fichier avec son nom et son chemin
    Par varfendell dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 16/07/2008, 09h47
  5. Instancier un type avec son nom contenu dans un String
    Par the666deus dans le forum Langage
    Réponses: 7
    Dernier message: 24/05/2007, 14h41

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