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 :

extraction chaines depuis fichier


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut extraction chaines depuis fichier
    Bonjour à tous,

    Pour un projet d'automatisation de référencement de moteurs de recherche qui doit être fait uniquement en .BAT :
    Je souhaite extraire des attributs à partir de ce code html suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html>
    <head><title>Moteurs</title></head>
    <body>
    <div><a href="http://google.com" target="_blank">Google</a> - <a href="http://yahoo.fr" target="_blank">yahoo</a></div>
    <div><a href="http://www.seek.fr/" target="_blank">Seek</a> - <a href="https://ixquick.com/fra/" target="_blank">Ixquick</a></div>
    </body>
    </html>
    Je sais que les chaines à récupérer se situent systématiquement entre les chaines suivantes : #<a href="# et #" target="#
    L'idée est d'avoir en sortie un fichier contenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    http://google.com
    http://yahoo.fr
    http://www.seek.fr/
    https://ixquick.com/fra/
    J'ai essayé beaucoup de choses dont :
    for /f (Le problème est que le délimiteur ne peut etre une chaine mais un caractère unique et qu'il faut connaitre le nombre d'occurrences max par ligne)
    findstr /C (Me renvoi les lignes complètes contenant une chaine et reste pénible à encapsuler dans une boucle for)

    J'ai par contre plus de mal avec les expression régulières mais ca pourrait etre sans doute une solution.
    Pour information, j'ai demandé à l'ami google qui me fait un peu tourner en rond et j'ai bien fouillé ce forum (assez dense il faut l'avouer) (je retombe toujours sur des exemples sur un séparateur avec caractère unique.)

    Je sais que je ne suis pas loin de la solution mais je n'y parviens pas.
    Connaissez vous une commande ou une syntaxe de ces commandes permettant de faire cela simplement.
    Par exemple, connaitre les positions des occurrences et leur longueur (pour pouvoir ensuite les extraire)

    Je préfère dans un premier temps ne pas poster trop de code pour ne pas orienter vos propositions vers ce que j'aurais déjà testé en vain car je ne suis pas certain d'avoir pris la bonne direction.
    Voici quand même une base minimale de réflexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    
    set sep1=" href="
    set sep2=" target="
    set file = %~dp0Moteur.htm
    set sortie = = %~dp0resultat.txt
    
    
    REM findstr /C:%sep1% %file% >>%sortie%
    REM me retourne les lignes contenant au moins une fois la première chaine 'séparatrice' (sep1)
    
    REM for /f %%i in (%file%) do echo %%i>>%sortie%
    REM me retourne les premiers caractères jusqu'au premier separateur 'espace'
    Merci d'avance pour vos propositions.

  2. #2
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2012
    Messages : 14
    Par défaut
    Pas d'idée ?

  3. #3
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    Bonjour,
    Le code que je vais vous proposer n'est certainement pas parfait, cependant pour le moment je ne peux rien faire de plus car je sèche un peu mais bon voici la bête:
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off & cls
    Setlocal enabledelayedexpansion
     
    FOR /F "usebackq tokens=3 delims=http" %%a in (`"findstr /C:"http" txt.txt"`) do (
        set "var=%%a"
    	set "var=!var:~0,-2!"
        echo http!var!
    )
    pause
    Ce qui me retourne:

  4. #4
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Code BAT : 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
    @echo off
    Title Extraire les liens href by Hackoo 2015
    mode con cols=70 lines=10 & color 9B
    set InputFile=c:\test.html
    set OuputFile=c:\Liens.txt
    set PSFile=tmp.ps1
    (
    echo $ie = new-object -ComObject InternetExplorer.Application 
    echo $ie.Navigate2('%InputFile%'^) 
    echo while($ie.Busy^)^{^} 
    echo $ie.Document.links^|select href 
    echo $ie.Document.links^|select href ^> %OuputFile% 
    )>%PSFile%
    cmd /c PowerShell.exe -ExecutionPolicy bypass -noprofile -file %PSFile%
    pause
    Del %PSFile%
    if exist %OuputFile% Start %OuputFile%

  5. #5
    Membre émérite Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Par défaut
    @hackoofr: Comme d'habitude tu "triches" avec ton VBS/PS, cheater!

  6. #6
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Citation Envoyé par devilsnake88 Voir le message
    @hackoofr: Comme d'habitude tu "triches" avec ton VBS/PS, cheater!
    devilsnake88
    Parce que je suis en phase d'apprentissage du PS, donc j’encapsule tout VBS/PS, BAT/PS , BAT/VBS/HTA
    Cordialement hackoofr "le grand tricheur"

Discussions similaires

  1. Extraction d'information depuis fichier publisher
    Par redcurve dans le forum Développement Office System
    Réponses: 0
    Dernier message: 12/12/2012, 08h01
  2. Extraction depuis fichier & utilisation de variables
    Par Frlet44 dans le forum kettle/PDI
    Réponses: 1
    Dernier message: 18/11/2010, 11h54
  3. Réponses: 0
    Dernier message: 01/09/2008, 16h09
  4. extraction caractères depuis chaine
    Par vallgui dans le forum WinDev
    Réponses: 2
    Dernier message: 25/02/2008, 10h10
  5. Extraction de données depuis fichier .NDX ...
    Par Olif_C dans le forum WinDev
    Réponses: 4
    Dernier message: 30/08/2005, 11h57

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