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 "chaîne" arbo fichiers non binaire


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Par défaut Recherche "chaîne" arbo fichiers non binaire
    Bonjour,

    J'ai commencé une fonction pour rechercher une chaîne de caractères dans un ensemble de fichiers situés dans un répertoire (de façon récursive). Mon souci est d'écarter, lors de la lecture du contenu des fichiers, ceux qui ne seraient pas "lisibles" (ou parcourables facilement : les fichiers binaires..) car font perdurer l'exécution (l'ensemble peut atteindre un nombre de 1700 fichiers textes)

    Voici le code :

    fct_rechTextArbo_ps1.txt

    J'envisage de placer ce contrôle (de type de fichier) pour chacun des fichiers récupérés après le : foreach ($item in $coll_fic ) d'où mes commentaires dans le code !

    D'avance merci pour vos remarques et suggestions.

    PS. j'ai recherché dans ce forum et d'autres un type "moteur de recherche" écrit en powershell, mais sans succès d'où ma tentative de fonction ci-dessus

  2. #2
    Membre éprouvé

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2011
    Messages : 104
    Par défaut
    Bonjour,

    je sais que tu souhaite du powershell mais je ne sais pas faire. je te poste donc un batch au cas ou:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @echo off
    set dossier=%windir%
    set fonction_recherche=find /I "program"
    set filtre=*.xml *.bat
    set date_debut=19800101
    set date_fin=20150101
    setlocal enabledelayedexpansion
    for /r "%dossier%" %%i in (%filtre%) do (set fi=%%~fi&set var=0
    for /f "tokens=1,2" %%i in ('dir "!fi!" /TC ^|find "/"') do (set d=%%i&set h=%%j)
    set d2=!d:~6,4!!d:~3,2!!d:~0,2!&title fichier "!fi!"
    if /I !d2! GEQ !date_debut! if /I !d2! LEQ !date_fin! for /f "tokens=*" %%a in ('type "!fi!" ^|%fonction_recherche%') do set /a var+=1
    if not "!var!"=="0" echo [!var!] chaine[s] dans [!fi!])
    pause
    ps: il ne propose pas toutes les option qu'il y a dans ton script, il faudra le modifier un peu.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Par défaut
    Citation Envoyé par Cmanix Voir le message
    Bonjour,

    je sais que tu souhaite du powershell mais je ne sais pas faire. je te poste donc un batch au cas ou: ...
    Merci CMax
    .... mais j'ai besoin de le faire en PowerShell

    J'ai eu une petit idée de contrôle de taille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # juste après le PROCESS
    $RepSize = [double] ((Get-ChildItem -Path "C:\mesScripts" -Recurse | measure-object Length -sum).Sum / 1MB)
    $Taille = "{0:0}" -f $RepSize
      	# si plus grand que 100 Mo on ne fait rien
     	if ( $Taille -gt 100 )
      	{
    " Rep trop grand , choisir une arbo moins générale : taille $Taille " | Out-File $log -Append
    }
    else
    {
    - Ce qui, déjà, évitera la recherche dans les gros rép. : en attendant la solution pour tout parcourir sauf les binaires ...

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    une piste autour du type MIME des fichiers, Chapitre 5.3.3.1.

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 27
    Par défaut
    Salut Laurent,

    Merci pour ta réponse.

    Le souci étant que ce sont des fichiers issus d'un fichier compressé provenant d'un autre système et que ces fichiers qu'on extrait (de cette archive) n'ont pas d'extension (provenant d'unix !) , d'où l'impossibilité de se baser sur leurs noms ou extensions (.txt ect...)

    Ne sachant pas quel est le type de fichier, j'ai essayé de lire les premiers caractères (sans parler du BOM "Byte Order Mark" qui n'est pas le pb) voire deux premières lignes : si elles sont du type caractère je pourrais considérer que c'est du texte , mais avec quel "Regex" (là j'ai du mal à le composer) ?

    Je ne sais pas si c'est bien rigoureux comme démarche, ça me semble un peu bricolé ...
    enfin je n'ai pas trop d'idée : autre que celle-là ?

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Robyx Voir le message
    ces fichiers qu'on extrait (de cette archive) n'ont pas d'extension (provenant d'unix !) , d'où l'impossibilité de se baser sur leurs noms ou extensions (.txt ect...)
    Hé oui, pas de bras, pas de ...
    Citation Envoyé par Robyx Voir le message
    ça me semble un peu bricolé
    Un peu. Là, la situation fait que tu cherches à t'adapter au problème. C'est la source qui devrait être carré ( de chocolat bien sûr).

Discussions similaires

  1. Recherche de chaîne dans un tampon non typé
    Par bvsud dans le forum Langage
    Réponses: 7
    Dernier message: 13/01/2010, 16h50
  2. Recherche une chaîne dans un fichier
    Par |DuFF| dans le forum Windows
    Réponses: 5
    Dernier message: 24/01/2008, 17h11

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