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 :

Rechercher des fichiers dans un dossier, avec filtres


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juillet 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2015
    Messages : 3
    Par défaut Rechercher des fichiers dans un dossier, avec filtres
    Bonjour,

    Je voudrais pouvoir obtenir la liste des fichiers contenus dans un dossier, avec un filtre sur l'extension (exemple .txt) et sur une partie du nom des fichiers (par exemple les 4 caractères du nom à partir du 19ème = à 1104)

    la commande ci-dessous fonctionne
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichiers=Get-ChildItem -Path "c:\tmp" | Where-Object -FilterScript {($_.Name -match '.txt$')} | Where-Object -FilterScript {($_.Name.substring(18,4) -eq '1104')}

    mais le pb est que dans ce dossier se trouvent aussi des fichiers dont le nom est plus court
    et du coup j'obtiens l'erreur
    "Exception lors de l'appel de «*Substring*» avec «*2*» argument(s)*: «*startIndex ne peut pas être supérieur à la longueur de la chaîne."
    Comment puis-je faire ?


    Et question subsidiaire : comment faire, de plus, pour trier (croissant) la liste obtenue selon une partie du nom des fichiers (exemple de 23 à 8) ?


    Merci ++





    Exemple :

    020544.jpg
    024005.jpg
    029734.jpg
    033589.jpg
    038163.jpg
    042432.jpg
    OU-20200606165009-1316-34163820.dat
    OU-20200606165009-1317-34163810.txt
    OU-20200606165011-1318-34163824.dat
    OU-20200606165011-1317-34163824.txt
    OU-20200606165013-1104-34163838.dat
    OU-20200606165013-1104-34163829.txt
    OU-20200606165015-1208-34163841.dat
    OU-20200606165015-1208-34163831.txt
    OU-20200606165015-2163-34163840.dat
    OU-20200606165015-1104-34163830.txt


    -->
    OU-20200606165013-1104-34163829.txt
    OU-20200606165015-1104-34163830.txt

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Mai 2020
    Messages
    288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2020
    Messages : 288
    Par défaut
    Bonjour,

    Est-ce que vous souhaitez obligatoirement désigner l'emplacement des caractères ?

    Si non, vous pouvez utiliser ce genre de commandes

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ChildItem -Path "c:\tmp" | Where-Object {$_.Name -ilike '*1104*.txt'}

  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
    Pratiquons une petite folie

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ChildItem -LiteralPath "C:\tmp" -Filter ("??????????????????1104?????????.txt") -File | Sort-Object -Property @{Expression = {$_.Name.Substring(23,8)}}
    ou
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ChildItem -LiteralPath "C:\tmp" -Filter ("?" * 18 + "1104" + "?" * 9 + ".txt") -File | Sort-Object -Property @{Expression = {$_.Name.Substring(23,8)}}

Discussions similaires

  1. Creer un fichier dans un dossier avec des variables d'un autre fichier
    Par Marago dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2017, 09h32
  2. Réponses: 13
    Dernier message: 30/11/2011, 09h04
  3. Réponses: 1
    Dernier message: 18/11/2008, 21h42
  4. [FTP] Rechercher des fichiers dans un site FTP par PHP
    Par jack_1981 dans le forum Langage
    Réponses: 31
    Dernier message: 03/08/2006, 13h37
  5. rechercher des fichiers dans tous les dossiers
    Par nitteo dans le forum MFC
    Réponses: 4
    Dernier message: 23/06/2006, 18h08

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