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

VBScript Discussion :

récupérer derniere ligne .txt


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut récupérer derniere ligne .txt
    Bonjour à tous

    Voilà j'ai un soucis auquel je n'ai pas trouvé de réponse
    - Malgrès des recherches sur ce forum et google

    Et j'aimerais votre aide
    (si le sujet à deja était traité merci de m'envoyer un lien je me débrouillerais pour la suite et reviendrais sur ce post si je n'y arrive toujours pas)

    Donc voici mon soucis

    J'execute un logiciel de sauvegarde à l'aide d'un VBS, le soucis c'est que le logiciel ne me signale une erreur quand il y en a une que dans un fichier log.txt

    Je voudrais donc après avoir executé mon appli


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    save = msgbox("Voulez-vous lancer la sauvegarde ?",vbYesNo,"Save DINO")
    if save = vbyes then
    		'Set WshShell = WScript.CreateObject("WScript.Shell")
    		'Return = WshShell.Run("""C:\xxx.exe" , 1, true)
    		MsgBox "Fin de la sauvegarde" _

    qu'il me fasse une recherche dans mon fichier log.txt qui peut se présenter sous 2 formes

    en cas d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        22/12/2008 09:44:23 **** Sauvegarde de "Sauvegarde Dino" terminée! 0 fichiers ont été copiés. Durée : 0 heure(s), 0 minute(s), 0 secondes ****
    ERR 22/12/2008 09:44:24 La sauvegarde contient 1 erreurs

    ou si tout se passe bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        19/12/2008 14:14:04 L'archive "c:\save.zip" a été créée/mise à jour. 30 fichier(s) ont été compressé(s)

    et quand dans le cas ou la derniere ligne commence par "ERR" qu'il m'ouvre une msgbox en me disant "erreur"

    je sais faire les if et les msgbox

    le soucis c'est que je ne sais pas analyser les 3 premiers caractères de la derniere ligne d'un .txt

    Merci d'avance pour votre aide
    Demander moi des infos si il vous en manque

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    pour lire un fichier ligne à ligne :

    Comment lire le contenu d'un fichier texte ?

    et "left" pour lire le début d'une chaine:

    Comment extraire une partie d'une chaîne ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut
    Merci beaucoup je regarde ça dessuite et je vous tiens au courant

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 57
    Par défaut
    Pour rechercher une chaine dans un fichier voici un bout de code

    Code : 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
     
    mot_cherche = "chaine"
    compteur = 0
    file = WScript.ScriptFullName ' on définit le fichier à lire, ici c'est le script lui même
     
    Set fso = CreateObject("Scripting.FileSystemObject") 
    set f = fso.opentextfile(file, 1, true)
     
    do until f.atendofstream 
    	chaine = f.readline() 
    	if instr(1, chaine, mot_cherche) > 0 then
    		compteur = compteur + 1
    	end if
    loop
     
    f.close 
    set f = nothing
    set fso = nothing 
     
    wscript.echo "Le mot : ""chaine"" a été trouvé " & compteur & " fois !!"

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut
    Bon j'ai pas trop mal avancé (javance pas vite je suis au taf et j'ai plusieurs trucs à faire en même temps) mais je suis arrivé à ça

    Code : 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
    save = msgbox("Voulez-vous lancer la sauvegarde ?",vbYesNo,"Save")
    if save = vbyes then
    		'Set WshShell = WScript.CreateObject("WScript.Shell")
    		'Return = WshShell.Run("""C:\xxx.exe" , 1, true)
    			'Vérification de la sauvegarde
    			Const ForReading = 1, ForWriting = 2 
    				Dim fFso, f
    				Dim gFso, g
    				Dim hFso, h
    				Dim ts, nl
    				Dim ligne
    				Dim avligne
    				Set oFso = CreateObject("Scripting.FileSystemObject")
    				Set f = oFso.OpenTextFile("d:\log.txt", ForReading)
    				ts = f.ReadAll '-- Lit la totalité du fichier
    				'Set ligne = f.Line    '-- Récupère le nombre de lignes (Mais cela ne fonctionne pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    				' je désincrémente f.line de 1 (car le logiciel crée une ligne vide à la fin) (Je ne sais pas comment faire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    				' je crée un .txt temporaire
    				Set gFso = CreateObject("Scripting.FileSystemObject")
    				Set g = gFso.OpenTextFile("d:\temp.txt", ForWriting,true)
    				' je récupère f.line-1 dans un .txt temporaire
    				'g.write(f.line-1) (Mais cela ne fonctionne pas ... quoique plutot logique pour l'instant)
    Code : 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
     
    				' je cherche la présence de "ERR" de dedans
    				mot_cherche = "ERR"
    				compteur = 0
    				file = d:\temp.txt ' on définit le fichier à lire, ici c'est mon .txt temporaire
    				Set hFso = CreateObject("Scripting.FileSystemObject") 
    				set h = fFso.opentextfile(file, 1, true) 
    				do until h.atendofstream 
    					ERR = h.readline() 
    					if instr(1, ERR, mot_cherche) > 0 then
    						compteur = compteur + 1
    					end if
    				loop
    				h.close 
    				set h = nothing
    				set hFso = nothing  
    				wscript.echo "Le mot : ""ERR"" a été trouvé "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    				'si ERR à était trouvé msgbox "ERROR" sinon suite
    				'If exist ERR
    				'	Msgbox "Erreur"
    				'Else
    		MsgBox "Fin de la sauvegarde" _
    		,vbinformation,"Save"
    	else
    end if

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 57
    Par défaut
    Tu n'es pas obligé de créer un fichier temporaire, tu peux directement aller lire dans ton fichier de log généré par ton outils de sauvegarde.

    Ici tu n'as pâs non plus besoin de lire ton fichier avec "f.ReadAll " on le fait lors du "do until f.atendofstream" soit tant que l'on a pas atteind la fin du fichier on fait le traitement de recherche de chaine.

    Sinon pour compter le nombre de ligne d'un fichier voici un autre exmple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ' ****	COMPTE LE NOMBRE DE LIGNE	****
    Const ForReading = 1, ForWriting = 2 
    Dim File, oFso, f
    Dim ts, nl
     
    ' Définition du fichier pour lequel on veut compter le nombre de ligne 
    File = WScript.ScriptFullName 
     
    Set oFso = CreateObject("Scripting.FileSystemObject")
    Set f = oFso.OpenTextFile(File, ForReading)
    f.ReadAll			'-- Lit la totalité du fichier
    Nbligne = f.Line	'-- Récupère le nombre de lignes
    Wscript.echo "le fichier : " & File & vbcrlf & "contient " & Nbligne & " ligne(s)"
    Sinon as tu testé si ça fonctionne ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer derniere ligne d'une textbox multiligne
    Par pauleta75 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/06/2011, 15h23
  2. récupérer la derniere ligne d'une table?
    Par purplebamboo dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 09/04/2009, 16h41
  3. Réponses: 11
    Dernier message: 22/07/2008, 09h11
  4. récupérer les dernieres lignes d'une table
    Par steave dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/04/2008, 12h26
  5. Récupérer les N derniers lignes
    Par arsenik7 dans le forum Oracle
    Réponses: 8
    Dernier message: 12/05/2006, 13h35

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