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 mot dans une ligne


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Par défaut Recherche mot dans une ligne
    Bonjour à tous,

    J'ai un fichier texte contenant : (avec 4 espaces avant ASSxxxxt)

        ASSignatureApplied                       [REG_BINARY]   : [UTC] jeudi 25 octobre 2018 06:28:44 
    et j'aimerais bien mettre dans un fichier juste la date (le mieux ça serait 25/10/18)

    j'ai fait :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo off
    
    for /f "tokens=6,7,8 delims= " %%A in ('c:\test.txt') do (set var=%%A %%B %%C)
    echo %var% > c:\test2.txt

    Dans le nouveau fichier texte créé j'ai "Command Echo désactivé".

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Salut,

    Une idée :


    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
    @echo off
    setlocal enabledelayedexpansion
     
    set "octobre=10"
    set "novembre=11"
    set "decembre=12"
     
     
    for /f "tokens=5-8" %%a in (in.txt) do (
    	set "$month=%%c"
    	set "$ligne=%%b\!%%c!\%%d"
    	)
     
    echo !$ligne!

    sortie :


  3. #3
    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

    Une solution en Vbscript
    Code vb : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    Option Explicit
    Dim ws,Title,InPutFile,OutPutFile,Data
    Dim dico,K,i,Mydate,Mois,Nom_des_mois,Num_Mois,Num,MyNewDate
    Title = "Extraire une date depuis un fichier Texte by Hackoo"
    If wscript.arguments.count > 0 Then
        InPutFile = Wscript.Arguments(0)
        If Not IsTXTFile(InPutFile) Then Call Display_Help_Usage()
        OutPutFile = GetFilenameWithoutExtension(InPutFile) & "_Output.txt"
        Data = ReadFile(InPutFile)
        Call Main()
        Set ws = CreateObject("wscript.shell")
        'Explorer(OutPutFile)
        ws.run "CMD /C Start /MAX Notepad " & chr(34) & OutPutFile & chr(34),0,True
    Else
        Call Display_Help_Usage()
    End If
    '-----------------------------------------------------------------
    Sub Main()
    Mydate = Extracting_Date(Data)
    Mois = Split(MyDate," ")(1)
    Set dico = CreateObject("Scripting.Dictionary")
    Nom_des_mois = Array("janvier","fevrier","Mars","Avril","Mai","juin",_
    "juillet","aout","septembre","octobre","novembre","decembre")
    Num_Mois = Array("01","02","03","04","05","06","07","08","09","10","11","12")
     
    For i=0 To UBound(Nom_des_mois)
        dico(Nom_des_mois(i)) = Num_Mois(i)
    Next
     
    For Each K in dico
        If K = Mois Then 
            Num = dico(K)
            Exit For
        End If
    Next
    MyNewDate = Replace(Mydate,Mois,Num)
    MyNewDate = Replace(MyNewDate," ","/")
    Call Write2File(MyNewDate,OutPutFile)
    End Sub
    '------------------------------------------------------------------
    Sub Display_Help_Usage()
        Dim ws
        Set ws = CreateObject("wscript.shell")
        ws.Popup "Vous devez faire glisser un fichier texte sur ce script" & vbCrLF &_
        chr(34) & WSH.ScriptName & chr(34),8,Title,vbExclamation
        Wscript.Quit(1)
    End Sub
    '------------------------------------------------------------------
    Function IsTXTFile(sFile)
        Dim regEx
        Set regEx = New RegExp
        regEx.Pattern = "(.txt)"
        regEx.IgnoreCase = True
        If regEx.Test(sFile) Then
            IsTXTFile = True
        End If
    End Function
    '------------------------------------------------------------------
    Sub Explorer(File)
        ws.run "Explorer /n,/select,"& File &"",1,True
    End Sub
    '------------------------------------------------------------------
    Function GetFilenameWithoutExtension(FileName)
        Dim Result, i
        Result = FileName
        i = InStrRev(FileName, ".")
        If ( i > 0 ) Then
            Result = Mid(FileName, 1, i - 1)
        End If
        GetFilenameWithoutExtension = Result
    End Function
    '------------------------------------------------------------------
    Function ReadFile(InPutFile)
        Dim objFSO,oTS,sText
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set oTS = objFSO.OpenTextFile(InPutFile)
        sText = oTS.ReadAll
        oTS.close
        set oTS = nothing
        Set objFSO = nothing
        ReadFile = sText
    End Function 
    '------------------------------------------------------------------
    Function Extracting_Date(Data)
        Dim regEx, Match, Matches
        Set regEx = New RegExp
        regEx.Pattern = "\d{1,2} (\w+) \d{4}"
        regEx.IgnoreCase = True
        regEx.Global = True
        If regEx.Test(Data) = False then 
            MsgBox "Pas de date trouvé",vbExclamation,Title
            Wscript.Quit()
        Else 
            Set Matches = regEx.Execute(Data)
            For Each Match in Matches
                Extracting_Date = Match.Value
            Next
        End If
    End Function
    '------------------------------------------------------------------
    Sub Write2File(strText,OutPutFile)
        Const ForWriting = 2
        Dim fs,ts 
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set ts = fs.OpenTextFile(OutPutFile,ForWriting,True)
        ts.WriteLine strText
        ts.Close
    End Sub
    '------------------------------------------------------------------

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Par défaut
    Impeccable merci !

    Autre chose :

    A la base j'avais un fichier texte avec des centaines de ligne et la ligne "ASSignatureApplied [REG_BINARY] : [UTC] jeudi 25 octobre 2018 06:28:44 " est la 251ème.

    j'ai fait un petit script qui fonctionne bien : (il me permet d'isoler la 251ieme ligne)

    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    set ligne=251
    set fichier=xxx.txt
     
    find /n /v "" %fichier%|find "[%ligne%]">^^&set/pMot=<^^&del ^^
    set MOT=%MOT:*]=%
    echo %MOT% > "yyy.txt"
    Avez vous une commande en batch qui permet automatiquement de l'obtenir, si le nombre 251 change par exemple, avec comme identificateur : ASSignatureApplied par exemple. J'ai essayé avec findstr mais bon pas convaincu ?

    Merci beaucoup.

  5. #5
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    pas compris !!!

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Par défaut
    En gros la ligne que je vous ai donné est la 251ieme ligne d'un fichier texte et j'aimerais savoir comment identifier cette ligne dans mettre en paramètre le nombre 251 ( si un jour le nombre change) en indentifiant par exemple le premier mot de la ligne "AVSignatureApplied"

  7. #7
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Si tu n'a que 1 fois "ASSignatureApplied" dans ton fichier, t'as pas besoin de connaître le No de ligne:


    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
    @echo off
    setlocal enabledelayedexpansion
     
    set "octobre=10"
    set "novembre=11"
    set "decembre=12"
     
     
    for /f "tokens=5-8" %%a in ('find "ASSignatureApplied" "in.txt"') do (
    	set "$month=%%c"
    	set "$ligne=%%b\!%%c!\%%d"
    	)
     
    echo !$ligne!


    En VBS pour @Hackoo (En beaucoup plus simple )


    Code vbs : 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
    18
    19
    Dim objDictionary
    Set objDictionary = CreateObject("Scripting.Dictionary")
    
    objDictionary.Add "octobre", "10"
    objDictionary.Add "novembre", "11"
    objDictionary.Add "decembre", "12"
    
    filename = "in.txt"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.OpenTextFile(filename)
    
    Do Until f.AtEndOfStream
    	a=Split(Trim(f.readline))
    	if a(0) = "ASSignatureApplied" then
    		WScript.echo(a(5) & "/" & objDictionary(a(6)) & "/" & a(7))
    	End if
    Loop
    
    f.Close


Discussions similaires

  1. Formule Si avec recherche d'un mot dans une ligne
    Par maximus30 dans le forum Excel
    Réponses: 2
    Dernier message: 06/12/2012, 18h20
  2. récuperer un mot dans une ligne sous C#
    Par ouadie99 dans le forum C#
    Réponses: 2
    Dernier message: 07/01/2008, 17h25
  3. Recherche mot dans une URL
    Par nidecker dans le forum Linux
    Réponses: 3
    Dernier message: 11/09/2007, 18h20
  4. remplacer un mot dans une ligne
    Par italiasky dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 08/04/2007, 19h19
  5. Chercher des mots dans une ligne
    Par chemouz dans le forum C++
    Réponses: 1
    Dernier message: 17/12/2005, 12h42

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