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 :

Vbs export sélectif fichier txt et importation dans un fichier existant


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut Vbs export sélectif fichier txt et importation dans un fichier existant
    Bonjour,

    J'utilise le gestionnaire de ressources du serveur de fichiers sur Windows 2012 R2.
    J'exporte les quotas depuis cet utilitaire et souhaite extraire certaines données pour les injecter dans un autre fichier.

    L'export se fait eu format txt avec cette structure :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    "Quota Usage Report"
     
     
    Generated at: "31/08/2016 10:34:18"
     
    "Lists the quotas that exceed a certain disk space usage level. Use this report to quickly identify quotas that may soon be exceeded so that you can take the appropriate action."
     
    Report settings: 
    Machine: ,"SRV-BACKUP1"
    Report Folders: ,"D:\",
    Parameters: ,"Minimum Quota used percent: 0%"
     
     
    Report Totals
    Files shown in the report
    Quotas,Quota Usage
    "29","601,036 MB"
    All files matching report criteria
    Quotas,Quota Usage
    "29","601,036 MB"
     
     
    Report statistics
    Folder,Owner,Quota,Usage,Percent Used(%),Peak Usage,Peak Usage Time
    "d:\dossier1","BUILTIN\Administrators","51,200 MB","51,295 MB","100.18" %,"51,357 MB","22/08/2016 22:47:55"
    "d:\dossier2","BUILTIN\Administrators","61,440 MB","58,840 MB","95.77" %,"65,394 MB","21/07/2016 17:11:55"
    "d:\dossier3","BUILTIN\Administrators","133,120 MB","120,577 MB","90.58" %,"239,457 MB","23/08/2016 22:42:12"
    "d:\dossier4","BUILTIN\Administrators","8,192 MB","7,306 MB","89.19" %,"10,723 MB","22/08/2016 17:15:48"
    C'est un exemple car j'ai beaucoup plus que 4 dossiers.

    J'aimerai extraire ces valeurs sous la forme :
    [Folder] quota de [Usage/1024] Gb utilisé à [Percent Used] %
    dans cet exemple, cela donnerai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    d:\dossier1 quota de 50 Gb utilisé à 100.18 %
    d:\dossier2 quota de 60 Gb utilisé à 95.77 %
    d:\dossier3 quota de 120 Gb utilisé à 90.58 %
    d:\dossier4 quota de 8 Gb utilisé à 89.19 %
    J'aimerai insérer ce texte extrait à un fichier existant contenant :
    dossier1 backup success
    dossier2 backup failed
    dossier3 backup success
    dossier4 backup error

    il faudrait que je puisse insérer en bout de ligne les quota de [Usage/1024] Gb utilisé à [Percent Used] % en fonction du nom du dossierN (qui est le même que dans le fichier généré par le gestionnaire de ressources du serveur de fichiers)

    afin d'avoir :
    [dossierN] backup [resultat] quota de [Usage/1024] Gb utilisé à [Percent Used] %

    soit dans cet exemple
    dossier1 backup success quota de 50 Gb utilisé à 100.18 %

    J'espère cette fois ci avoir été assez précis dans ma demande.

    batist3

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    J'espère cette fois ci avoir été assez précis dans ma demande
    Oui un peu
    Et qui va décider de success, failed et error ?
    Le fichier résultat contient-il d'autre lignes que celles citées ?
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    le success ou failed est déterminé par le logiciel de sauvegarde.

    en fait, j'aimerai das un premier temps exporter les données du fichier txt [Folder] quota de [Usage/1024] Gb utilisé à [Percent Used] %
    pour les intégrer temporairement dans un fichier txt (exemple quota.txt) qui donnerai

    d:\dossier1 quota de 50 Gb utilisé à 100.18 %
    d:\dossier2 quota de 60 Gb utilisé à 95.77 %
    d:\dossier3 quota de 120 Gb utilisé à 90.58 %
    d:\dossier4 quota de 8 Gb utilisé à 89.19 %

    Une fois ce fichier généré, je supprimerai le d:\ et ajouterai au fichier principal (exemple backup.txt) les arguments quota de [Usage/1024] Gb utilisé à [Percent Used] %
    à la fin de la ligne contenant dossier1 :

    actuellement :
    OK backup dossier1 succes (ou failed) ...

    souhaité
    OK backup dossier1 success quota de 50 Gb utilisé à 100.18 %

    je souhaite copier quota de [Usage/1024] Gb utilisé à [Percent Used] % du fichier quota.txt en fin de ligne du dossierN correspondant dans le fichier backup.txt. (grace au vbs donné dans le post précédent)


    Le fichier ne contient pas d'autres lignes que celles citées.

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Voici une esquisse du
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2
     
    Dim fso, Fich1, Fich2, Ret, NewText(5), tb, tmp, I, Result,aux
     
    Set fso = CreateObject("Scripting.FileSystemObject")  
    Set fich1 = fso.OpenTextFile("Source.txt", ForReading, False) 
     
    I = 0
    Do While Not fich1.AtEndOfStream
       Ret = fich1.ReadLine
       If InStr(LCase(Ret), Chr(34) & "d:\dossier") > 0 Then
          tb = Split(Ret, Chr(34) & "," & Chr(34))
     
          tmp = (Replace(Replace(tb(2), ",", ""), "MB", ""))/1024
          aux = Replace(Mid(tb(4), 1 ,InStr(1, tb(4), "%")), Chr(34), "")  
          NewText(I) = " quota de " & CStr(tmp) & " GB utilisé à " & aux 
          I = I + 1
        End If
    Loop
    fich1.Close
     
    Result = ""
    I = 0
    Set fich2 = fso.OpenTextFile("Resultat.txt", ForReading, False)
    Do While Not fich2.AtEndOfStream
       Ret = fich2.ReadLine
       If InStr(1, Ret, "d:\") > 0 Then 
           MsgBox "Fichier déjà traité" & vbNewLine & "On quitte sans modifier le fichier résultat",vbInformation, Wscript.ScriptName
           Wscript.Quit
        End If
       Ret = "d:\" & Ret 
       Result = Result & Ret & NewText(I) & vbNewLine
       I = I + 1
    Loop
    fich2.Close
    Set fich2 = fso.OpenTextFile("Resultat.txt", ForWriting, False)
    Fich2.Write Result
    fich2.Close
    MsgBox "Opération terminée avec succès"
    Si tu as beaucoup plus de lignes à traiter, il te suffit d'augmenter la taille du tableau NewText(5) à 10 par exemple s'il y en a 11(car le premier index du tableau est zéro)
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    merci pour ce retour

    par contre, j'ai essayé une première fois, cela a fonctionné.

    Je n'arrive plus à le faire marcher

    contenu fichier Source.txt :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    "Quota Usage Report"
     
     
    Generated at: "31/08/2016 10:34:18"
     
    "Lists the quotas that exceed a certain disk space usage level. Use this report to quickly identify quotas that may soon be exceeded so that you can take the appropriate action."
     
    Report settings: 
    Machine: ,"SRV-BACKUP1"
    Report Folders: ,"D:\",
    Parameters: ,"Minimum Quota used percent: 0%"
     
     
    Report Totals
    Files shown in the report
    Quotas,Quota Usage
    "29","601,036 MB"
    All files matching report criteria
    Quotas,Quota Usage
    "29","601,036 MB"
     
     
    Report statistics
    Folder,Owner,Quota,Usage,Percent Used(%),Peak Usage,Peak Usage Time
    "d:\dossier1","BUILTIN\Administrators","51,200 MB","51,295 MB","100.18" %,"51,357 MB","22/08/2016 22:47:55"
    "d:\dossier2","BUILTIN\Administrators","61,440 MB","58,840 MB","95.77" %,"65,394 MB","21/07/2016 17:11:55"
    "d:\dossier3","BUILTIN\Administrators","133,120 MB","120,577 MB","90.58" %,"239,457 MB","23/08/2016 22:42:12"
    "d:\dossier4","BUILTIN\Administrators","8,192 MB","7,306 MB","89.19" %,"10,723 MB","22/08/2016 17:15:48"
    contenu du vbs :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2
     
    Dim fso, Fich1, Fich2, Ret, NewText(5), tb, tmp, I, Result,aux
     
    Set fso = CreateObject("Scripting.FileSystemObject")  
    Set fich1 = fso.OpenTextFile("Source.txt", ForReading, False) 
     
    I = 0
    Do While Not fich1.AtEndOfStream
       Ret = fich1.ReadLine
       If InStr(LCase(Ret), Chr(34) & "d:\dossier") > 0 Then
          tb = Split(Ret, Chr(34) & "," & Chr(34))
     
          tmp = (Replace(Replace(tb(2), ",", ""), "MB", ""))/1024
          aux = Replace(Mid(tb(4), 1 ,InStr(1, tb(4), "%")), Chr(34), "")  
          NewText(I) = " quota de " & CStr(tmp) & " GB utilisé à " & aux 
          I = I + 1
        End If
    Loop
    fich1.Close
     
    Result = ""
    I = 0
    Set fich2 = fso.OpenTextFile("Resultat.txt", ForReading, False)
    Do While Not fich2.AtEndOfStream
       Ret = fich2.ReadLine
       If InStr(1, Ret, "d:\") > 0 Then 
           MsgBox "Fichier déjà traité" & vbNewLine & "On quitte sans modifier le fichier résultat",vbInformation, Wscript.ScriptName
           Wscript.Quit
        End If
       Ret = "d:\" & Ret 
       Result = Result & Ret & NewText(I) & vbNewLine
       I = I + 1
    Loop
    fich2.Close
    Set fich2 = fso.OpenTextFile("Resultat.txt", ForWriting, False)
    Fich2.Write Result
    fich2.Close
    MsgBox "Opération terminée avec succès"
    Ca m'affiche bien "Opération terminée avec succès" mais le fichier Resultat.txt reste vide.

    J'ai également essayé avec le fichier Source.txt simplifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "d:\dossier1","BUILTIN\Administrators","51,200 MB","51,295 MB","100.18" %,"51,357 MB","22/08/2016 22:47:55"
    "d:\dossier2","BUILTIN\Administrators","61,440 MB","58,840 MB","95.77" %,"65,394 MB","21/07/2016 17:11:55"
    "d:\dossier3","BUILTIN\Administrators","133,120 MB","120,577 MB","90.58" %,"239,457 MB","23/08/2016 22:42:12"
    "d:\dossier4","BUILTIN\Administrators","8,192 MB","7,306 MB","89.19" %,"10,723 MB","22/08/2016 17:15:48"
    mais rien n'y fait

    je fais quelque chose de travers ?

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Pourtant ça fonctionne parfaitement sur ma machine et quel que soit le nombre de lignes du fichier Source.txt hormis celles contenant "d:\
    On va alors procéder autrement : ajouter un flag booléen pour contrôler l'écriture dans le fichier resultat.txt :
    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
    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
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2
     
    Dim fso, Fich1, Fich2, Ret, NewText(5), tb, tmp, I, Result, aux, Ecrire
     
    Set fso = CreateObject("Scripting.FileSystemObject")  
    Set fich1 = fso.OpenTextFile("Source.txt", ForReading, False) 
    Ecrire = True
    I = 0
    Do While Not fich1.AtEndOfStream
       Ret = fich1.ReadLine
       If InStr(LCase(Ret), Chr(34) & "d:\dossier") > 0 Then
          tb = Split(Ret, Chr(34) & "," & Chr(34))
     
          tmp = (Replace(Replace(tb(2), ",", ""), "MB", ""))/1024
          aux = Replace(Mid(tb(4), 1 ,InStr(1, tb(4), "%")), Chr(34), "")  
          NewText(I) = " quota de " & CStr(tmp) & " GB utilisé à " & aux 
          I = I + 1
        End If
    Loop
    fich1.Close
     
    Result = ""
    I = 0
    Set fich2 = fso.OpenTextFile("Resultat.txt", ForReading, False)
    Do While Not fich2.AtEndOfStream
       Ret = fich2.ReadLine
       If InStr(1, Ret, "d:\") > 0 Then 
           Ecrire = False
        Else 
           Ret = "d:\" & Ret 
           Result = Result & Ret & NewText(I) & vbNewLine
           I = I + 1
       End If
    Loop
    fich2.Close
    If Ecrire Then
        Set fich2 = fso.OpenTextFile("Resultat.txt", ForWriting, False)
        Fich2.Write Result
        fich2.Close
        MsgBox "Opération terminée avec succès", vbInformation, Wscript.ScriptName
    Else 
        MsgBox "Opération annulée car le fichier [Resultat.txt] a déjà été modifié", vbExclamation, Wscript.ScriptName
    End If
    Dans le cas où le fichier cible a été modifié, le script n'y écrit rien sinon on aurait des lignes où à chaque exécution du script l'ajout du contenu de NewText(index) , donc des lignes interminables.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  7. #7
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    Je ne comprends pas

    j'ai essayé sur mon serveur puis sur 3 postes et deux autres serveurs.

    Je n'arrive pas à le faire fonctionner.

    je vais essayer un peu plus tard et te donne le retour d'information.

    Merci d’avoir pris le temps

  8. #8
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Y a-t-il un message d'erreur ?
    Le script, après exécution, émet-il l'une ou l'autre MsgBox ?

    S'il s'agit d'envoyer/lire les fichiers vers/à partir d'un serveur, il faut bien spécifier le chemin d'accès complet aux différents fichiers,par exemple
    Set Fich1 = fso.OpenTexteFile("\\Nom_du_Serveur\\d:\Source.txt", ForReading, False),
    Il faut vérifier la syntaxe(mot de passe et login seraient peut-être requis)
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  9. #9
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    J'ai le message Opération terminée avec succès
    le fichier Resultat.txt reste vierge

    il n'y a pas de message d'erreur

    de plus, les fichiers restent en local
    les fichiers txt sont placés dans le même dossier que le vbs (à la racine de D) le résultat est le même que je laisse

    Set fich1 = fso.OpenTextFile("Source.txt", ForReading, False) ou que je mette
    Set fich1 = fso.OpenTextFile("d:\Source.txt", ForReading, False)

    je viens de relancer le test sur un autre pc en Windows 10 sans succès

    pour être bien sur, dans le fichier Source.txt, je mets :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    "Quota Usage Report"
     
     
    Generated at: "31/08/2016 10:34:18"
     
    "Lists the quotas that exceed a certain disk space usage level. Use this report to quickly identify quotas that may soon be exceeded so that you can take the appropriate action."
     
    Report settings: 
    Machine: ,"SRV-BACKUP1"
    Report Folders: ,"D:\",
    Parameters: ,"Minimum Quota used percent: 0%"
     
     
    Report Totals
    Files shown in the report
    Quotas,Quota Usage
    "29","601,036 MB"
    All files matching report criteria
    Quotas,Quota Usage
    "29","601,036 MB"
     
     
    Report statistics
    Folder,Owner,Quota,Usage,Percent Used(%),Peak Usage,Peak Usage Time
    "d:\dossier1","BUILTIN\Administrators","51,200 MB","51,295 MB","100.18" %,"51,357 MB","22/08/2016 22:47:55"
    "d:\dossier2","BUILTIN\Administrators","61,440 MB","58,840 MB","95.77" %,"65,394 MB","21/07/2016 17:11:55"
    "d:\dossier3","BUILTIN\Administrators","133,120 MB","120,577 MB","90.58" %,"239,457 MB","23/08/2016 22:42:12"
    "d:\dossier4","BUILTIN\Administrators","8,192 MB","7,306 MB","89.19" %,"10,723 MB","22/08/2016 17:15:48"
    dans le fichier test.vbs, je copie l'un des deux codes

    dans le fichier Resultat.txt, je le laisse vide

    le tout à la racine de D (pour les tests)

    j'essai de lancer le vbs en double cliquant dessus, en laçant cscript d:\test.vbs ou wscript d:\test.vbs

    Je suis sur que je dois faire une erreur mais je ne vois pas où.

  10. #10
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Si on essaie autre chose : au lieu de modifier le fichier Resultat.txt, on en crée un autre pour y mettre le résultat et ce en remplaçant la ligne 39 de mon dernier code par : Set fich2 = fso.OpenTextFile("Resultat1.txt", ForWriting, True) Le fichier Resultat.txt contenant bien sûr des données qui seront traitées.

    Peut-être aussi qu'il faut lancer le script en administrateur, par exemple, dans un autre fichier vbs, on met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim objShell
    Set objShell = CreateObject("Shell.Application")
    objShell.ShellExecute "WScript.exe", "D:\Nom_du_fichier.vbs" & " UAC", "", "RunAs", 1
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  11. #11
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    j'ai essayé avec l'UAC et la modif ligne 39 mais cela ne change rien.

    cependant, j'ai essayé de modifier la fin du script et j'obtiens une ligne dans le fichier resultat.txt

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2
     
    Dim fso, Fich1, Fich2, Ret, NewText(5), tb, tmp, I, Result,aux
     
    Set fso = CreateObject("Scripting.FileSystemObject")  
    Set fich1 = fso.OpenTextFile("Source.txt", ForReading, False) 
     
    I = 0
    Do While Not fich1.AtEndOfStream
       Ret = fich1.ReadLine
       If InStr(LCase(Ret), Chr(34) & "d:\dossier") > 0 Then
          tb = Split(Ret, Chr(34) & "," & Chr(34))
     
          tmp = (Replace(Replace(tb(2), ",", ""), "MB", ""))/1024
          aux = Replace(Mid(tb(4), 1 ,InStr(1, tb(4), "%")), Chr(34), "")  
          NewText(I) = " quota de " & CStr(tmp) & " GB utilisé à " & aux 
          I = I + 1
        End If
    Loop
    fich1.Close
     
    Result = ""
    I = 0
    Set fich2 = fso.OpenTextFile("Resultat.txt", ForReading, False)
    Do While Not fich2.AtEndOfStream
       Ret = fich2.ReadLine
       If InStr(1, Ret, "d:\") > 0 Then 
           MsgBox "Fichier déjà traité" & vbNewLine & "On quitte sans modifier le fichier résultat",vbInformation, Wscript.ScriptName
           Wscript.Quit
        End If
       Ret = "d:\" & Ret 
       Result = Result & Ret & NewText(I) & vbNewLine
       I = I + 1
    Loop
    fich2.Close
    Set fich2 = fso.OpenTextFile("Resultat.txt", ForWriting, False)
    Fich2.Write Ret & NewText(I) & vbNewLine
    fich2.Close
    MsgBox "Opération terminée avec succès"
    j'obtiens dans le fichier resultat.txt
    d:\ quota de 50 GB utilisé à 100.18 % (soit la première ligne du fichier source)

    j'ai changé ligne 40
    Fich2.Write Result par Fich2.Write NewText(I)

    si je mets Fich2.Write Ret & NewText(I), j'obtiens
    d:\ quota de 60 GB utilisé à 95.77 % (la seconde ligne du fichier source)

    J'ai peut être un soucis avec 33 et le terme Result
    Result = Result & NewText(I) & vbNewLine

  12. #12
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    je suis confus

    ton script fonctionne à merveille !

    je n'avais pas compris que tu écrivais directement dans le fichier resultat.txt en fonction de la présence des mots dossierx
    j'avais laissé le fichier resultat.txt vide du coup pas de correspondence et pas d'écriture.

    Encore Merci et désolé pour mes erreurs.

  13. #13
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Pourtant je l'avais dit : (Le fichier Resultat.txt contenant bien sûr des données qui seront traitées) dans le Post #10;
    mais ça ne fait rien et heureux pour toi que le problème est résolu.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  14. #14
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    décidement, je joues de malchance

    Après un essai en production, je me rends compte que le fichier Source n'est pas classé par ordre alphbétique des noms de dossiers mais par pourcentage des quotas.
    De ce fait j'ai mon fichier source.txt qui est du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "d:\dossier3","BUILTIN\Administrators","51,200 MB","51,295 MB","100.18" %,"51,357 MB","22/08/2016 22:47:55"
    "d:\dossier4","BUILTIN\Administrators","61,440 MB","58,840 MB","95.77" %,"65,394 MB","21/07/2016 17:11:55"
    "d:\dossier1","BUILTIN\Administrators","133,120 MB","120,577 MB","90.58" %,"239,457 MB","23/08/2016 22:42:12"
    "d:\dossier2","BUILTIN\Administrators","8,192 MB","7,306 MB","89.19" %,"10,723 MB","22/08/2016 17:15:48"
    Mon dossier Resultat est du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    backup dossier1 success
    backup dossier2 failed
    backup dossier3 success
    backup dossier4 error
    ce qui me donne un resultat erroné car les quotas en face des dossiers ne correspondent pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    backup dossier1 success quota de 50 GB utilisé à 100.18 % 
    backup dossier2 failed quota de 60 GB utilisé à 95.77%
    backup dossier3 success quota de 120 GB utilisé à 90.58 %
    backup dossier4 error quota de 8 GB utilisé à 89.19%
    serait-il possible de copier
    NewText(I) = " quota de " & CStr(tmp) & " GB utilisé à " & aux
    en face de la ligne ayant le même nom de dossier ?

  15. #15
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    serait-il possible de copier
    NewText(I) = " quota de " & CStr(tmp) & " GB utilisé à " & aux
    en face de la ligne ayant le même nom de dossier ?
    Tout à fait possible avec de petites modifications dans le script :
    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
    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
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2
    Dim fso, Fich1, Fich2, Ret, NewText(10), tb, tmp, I, Result, aux, J
     
    Set fso = CreateObject("Scripting.FileSystemObject")  
    Set fich1 = fso.OpenTextFile("Source.txt", ForReading, False) 
    I = 0
    Do While Not fich1.AtEndOfStream
       Ret = fich1.ReadLine
       If InStr(LCase(Ret), Chr(34) & "d:\dossier") > 0 Then
           tb = Split(Ret, Chr(34) & "," & Chr(34))
          tmp = (Replace(Replace(tb(2), ",", ""), "MB", ""))/1024
          aux = Replace(Mid(tb(4), 1 ,InStr(1, tb(4), "%")), Chr(34), "")  
          'On ajoute ici un indicateur de dossier qui servira dans la comparaison plus loin
          NewText(I) = Replace(tb(0), Chr(34), "") & " quota de " & CStr(tmp) & " GB utilisé à " & aux 
          I = I + 1
        End If
    Loop
    fich1.Close
     
    Result = ""
    I = 1
    Set fich2 = fso.OpenTextFile("Resultat.txt", ForReading, False)
    Do While Not fich2.AtEndOfStream
       Ret = fich2.ReadLine
       If InStr(1, LCase(Ret), "dossier") & CStr(I) > 0 Then 
          For J = 0 To Ubound(NewText)
             If  NewText(J) <> "" Then ' car il y a des éléments qui peuvent être vides, donc à écarter
                If InStr(1, NewText(J), "d:\dossier" & CStr(I)) > 0 Then ' recherche de l'indicateur pour le supprimer
                   Result = Result & Ret & Mid(NewText(J), 12) & vbNewLine
                   Exit For
                End If
             End If
          Next
          I = I + 1
       End If
    Loop
    fich2.Close
     
    ' Pour tester, il vaut mieux créer un autre fichier de sortie pour 
    ' ne pas avoir à modifier(restaurer) le fichier Resultat.txt
        Set fich2 = fso.OpenTextFile("Resultat1.txt", ForWriting, True) 
        Fich2.Write Result
        fich2.Close
        MsgBox "Opération terminée avec succès", vbInformation, Wscript.ScriptName
     
    ' La paresse peut parfois être utile: j'ai horreur de 
    ' lancer puis fermer un fichier à plusieurs reprises
    Dim WS : Set Ws = CreateObject("Wscript.Shell")
    Ws.Run "Resultat1.txt", 1 , true
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  16. #16
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    le dernier script envoyé classe bien les quota en face les dossiers correspondant sauf pour les deux premiers dossiers
    De plus, je pense que l'indicateur ne supprime pas l'unité quand il est supérieur à 10.

    Pour simplifier la compréhension, dans le fichier source, j'ai affecté 1% au dossier1, 10% au dossier10...

    voici le fichier du Source.txt
    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
    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
    "Quota Usage Report"
     
     
    Generated at: "01/09/2016 14:45:10"
     
    "Lists the quotas that exceed a certain disk space usage level. Use this report to quickly identify quotas that may soon be exceeded so that you can take the appropriate action."
     
    Report settings: 
    Machine: ,"SRV-BACKUP1"
    Report Folders: ,"D:\",
    Parameters: ,"Minimum Quota used percent: 0%"
     
     
    Report Totals
    Files shown in the report
    Quotas,Quota Usage
    "29","601,271 MB"
    All files matching report criteria
    Quotas,Quota Usage
    "29","601,271 MB"
     
     
    Report statistics
    Folder,Owner,Quota,Usage,Percent Used(%),Peak Usage,Peak Usage Time
    "d:\dossier5","BUILTIN\Administrators","51,200 MB","51,294 MB","5" %,"51,357 MB","22/08/2016 22:47:55"
    "d:\dossier3","BUILTIN\Administrators","61,440 MB","58,844 MB","3" %,"65,394 MB","21/07/2016 17:11:55"
    "d:\dossier18","BUILTIN\Administrators","133,120 MB","120,589 MB","18" %,"239,457 MB","23/08/2016 22:42:12"
    "d:\dossier13","BUILTIN\Administrators","8,192 MB","7,231 MB","13" %,"10,723 MB","22/08/2016 17:15:48"
    "d:\dossier20","BUILTIN\Administrators","10,240 MB","8,732 MB","20" %,"12,904 MB","18/07/2016 17:19:59"
    "d:\dossier7","BUILTIN\Administrators","7,168 MB","5,928 MB","7" %,"6,106 MB","30/08/2016 22:31:44"
    "d:\dossier28","BUILTIN\Administrators","40,960 MB","33,714 MB","28" %,"38,464 MB","15/07/2016 02:30:10"
    "d:\dossier12","BUILTIN\Administrators","8,192 MB","6,668 MB","12" %,"8,661 MB","22/08/2016 16:32:55"
    "d:\dossier1","BUILTIN\Administrators","30,720 MB","24,267 MB","1" %,"24,269 MB","31/08/2016 23:38:08"
    "d:\dossier17","BUILTIN\Administrators","8,192 MB","6,461 MB","17" %,"8,483 MB","22/08/2016 16:22:56"
    "d:\dossier8","BUILTIN\Administrators","15,360 MB","11,375 MB","8" %,"13,211 MB","22/08/2016 23:08:02"
    "d:\dossier11","BUILTIN\Administrators","12,288 MB","8,899 MB","11" %,"12,227 MB","22/08/2016 17:32:18"
    "d:\dossier22","BUILTIN\Administrators","15,360 MB","11,098 MB","22" %,"12,187 MB","31/08/2016 21:18:45"
    "d:\dossier25","BUILTIN\Administrators","51,200 MB","36,022 MB","25" %,"50,535 MB","07/07/2016 18:57:44"
    "d:\dossier6","BUILTIN\Administrators","40,960 MB","28,084 MB","6" %,"31,936 MB","18/07/2016 11:11:21"
    "d:\dossier26","BUILTIN\Administrators","81,920 MB","55,782 MB","26" %,"56,638 MB","06/07/2016 04:52:08"
    "d:\dossier14","BUILTIN\Administrators","10,240 MB","6,913 MB","14" %,"11,823 MB","22/08/2016 14:55:05"
    "d:\dossier4","BUILTIN\Administrators","30,720 MB","19,614 MB","4" %,"19,670 MB","01/09/2016 01:38:57"
    "d:\dossier10","BUILTIN\Administrators","18,432 MB","11,428 MB","10" %,"13,696 MB","22/08/2016 22:18:30"
    "d:\dossier27","BUILTIN\Administrators","10,240 MB","6,325 MB","27" %,"7,216 MB","31/08/2016 23:02:30"
    "d:\dossier19","BUILTIN\Administrators","15,360 MB","9,463 MB","19" %,"13,110 MB","22/08/2016 22:37:50"
    "d:\dossier29","BUILTIN\Administrators","15,360 MB","9,218 MB","29" %,"9,694 MB","19/07/2016 18:09:10"
    "d:\dossier9","BUILTIN\Administrators","15,360 MB","8,688 MB","9" %,"10,516 MB","22/08/2016 21:31:37"
    "d:\dossier23","BUILTIN\Administrators","51,200 MB","28,714 MB","23" %,"28,781 MB","31/08/2016 22:38:56"
    "d:\dossier16","BUILTIN\Administrators","8,192 MB","4,478 MB","16" %,"4,672 MB","31/08/2016 22:51:37"
    "d:\dossier21","BUILTIN\Administrators","15,360 MB","6,839 MB","21" %,"10,940 MB","13/07/2016 00:19:30"
    "d:\dossier15","BUILTIN\Administrators","13,312 MB","5,701 MB","15" %,"5,921 MB","30/08/2016 22:52:00"
    "d:\dossier2","BUILTIN\Administrators","5,120 MB","1,842 MB","2" %,"1,845 MB","31/08/2016 21:13:16"
    "d:\dossier24","BUILTIN\Administrators","5,120 MB","1,842 MB","24" %,"1,845 MB","31/08/2016 21:13:16"
    Voici le fichier Resultat.txt :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Backup dossier1 success
    Backup dossier2 success
    Backup dossier3 success
    Backup dossier4 success
    Backup dossier5 success
    Backup dossier6 success
    Backup dossier7 success
    Backup dossier8 success
    Backup dossier9 success
    Backup dossier10 success
    Backup dossier11 success
    Backup dossier12 success
    Backup dossier13 success
    Backup dossier14 success
    Backup dossier15 success
    Backup dossier16 success
    Backup dossier17 success
    Backup dossier19 success
    Backup dossier18 success
    Backup dossier20 success
    Backup dossier21 success
    Backup dossier22 failed
    Backup dossier23 success
    Backup dossier24 error
    Backup dossier25 failed
    Backup dossier26 success
    Backup dossier27 success
    Backup dossier28 success
    Backup dossier29 success
    et voici le résultat après exécution du dernier script dans le fichier resultat1.txt :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Backup dossier1 success 8 quota de 130 GB utilisé à 18 %
    Backup dossier2 success 0 quota de 10 GB utilisé à 20 %
    Backup dossier3 failed quota de 60 GB utilisé à 3 %
    Backup dossier4 success  quota de 30 GB utilisé à 4 %
    Backup dossier5 success  quota de 50 GB utilisé à 5 %
    Backup dossier6 success  quota de 40 GB utilisé à 6 %
    Backup dossier7 success  quota de 7 GB utilisé à 7 %
    Backup dossier8 success  quota de 15 GB utilisé à 8 %
    Backup dossier9 success  quota de 15 GB utilisé à 9 %
    Backup dossier10 success 0 quota de 18 GB utilisé à 10 %
    Backup dossier11 success 1 quota de 12 GB utilisé à 11 %
    Backup dossier12 success 2 quota de 8 GB utilisé à 12 %
    Backup dossier13 success 3 quota de 8 GB utilisé à 13 %
    Backup dossier14 success 4 quota de 10 GB utilisé à 14 %
    Backup dossier15 success 5 quota de 13 GB utilisé à 15 %
    Backup dossier16 success 6 quota de 8 GB utilisé à 16 %
    Backup dossier17 success 7 quota de 8 GB utilisé à 17 %
    Backup dossier18 success 8 quota de 130 GB utilisé à 18 %
    Backup dossier19 success 9 quota de 15 GB utilisé à 19 %
    Backup dossier20 success 0 quota de 10 GB utilisé à 20 %
    Backup dossier21 success 1 quota de 15 GB utilisé à 21 %
    Backup dossier22 failed 2 quota de 15 GB utilisé à 22 %
    Backup dossier23 success 3 quota de 50 GB utilisé à 23 %
    Backup dossier24 error 4 quota de 5 GB utilisé à 24 %
    Backup dossier25 failed 5 quota de 50 GB utilisé à 25 %
    Backup dossier26 success 6 quota de 80 GB utilisé à 26 %
    Backup dossier27 success 7 quota de 10 GB utilisé à 27 %
    Backup dossier28 success 8 quota de 40 GB utilisé à 28 %
    Backup dossier29 success 9 quota de 15 GB utilisé à 29 %
    Étrangement, Le dossier1 prend les valeur dossier18 et la ligne 2 du dossier20

  17. #17
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Salut;

    Dans un post précédent, j'avais dit qu'il faut augmenter la taille du tableau NewText() pour traiter plusieurs lignes contenant le terme d:\dossier.
    Modifications faites et tout fonctionne (du moins je l'espère !!!) :
    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
    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
    Option Explicit 
     
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim fso, Fich1, Fich2, Ret, NewText(100), tb, tmp, I, Result, aux, J
     
    Set fso = CreateObject("Scripting.FileSystemObject")  
    Set fich1 = fso.OpenTextFile("Source.txt", ForReading, False) 
     
    I = 0
    Do While Not fich1.AtEndOfStream
       Ret = fich1.ReadLine
       If InStr(LCase(Ret), Chr(34) & "d:\dossier") > 0 Then
           tb = Split(Ret, Chr(34) & "," & Chr(34))
          tmp = (Replace(Replace(tb(2), ",", ""), "MB", ""))/1024
          aux = Replace(Mid(tb(4), 1 ,InStr(1, tb(4), "%")), Chr(34), "")  
          'On ajoute ici un indicateur de dossier qui servira dans la comparaison plus loin
          ' tb(0) où on remplace les guillemets (") par une chaine vide
          NewText(I) = Replace(tb(0), Chr(34), "") & "   quota de " & CStr(tmp) & " GB utilisé à " & aux 
          I = I + 1
        End If
    Loop
    fich1.Close
    Dim strFind, ID, strFind1
    Result = ""
    I = 1
    Set fich2 = fso.OpenTextFile("Resultat.txt", ForReading, False)
    Do While Not fich2.AtEndOfStream
       Ret = fich2.ReadLine
              strFind = Trim(Mid(Ret, 8 , 8 + Len(Cstr(I))))
              For J = 0 To Ubound(NewText)
                 If NewText(J) <> "" Then 
                    strFind1 = Trim(Mid(NewText(J), 1 ,14))
                    ID = Len(strFind1) + 3
                    If InStr(1, NewText(J), strFind) > 0 Then 
                      If Mid(strFind1, 4) = strFind Then  
                          Result = Result & Ret & Mid(NewText(J), ID) & vbNewLine
                          Exit For
                      End If      
                    End If
                 End If
              Next
       I = I + 1
    Loop
    fich2.Close
     
    ' Pour tester, il vaut mieux créer un autre fichier de sortie pour 
    ' ne pas avoir à modifier(restaurer) le fichier Resultat.txt
        Set fich2 = fso.OpenTextFile("Resultat1.txt", ForWriting, True) 
        Fich2.Write Result
        fich2.Close
        MsgBox "Opération terminée avec succès", vbInformation, Wscript.ScriptName
     
    ' La paresse peut parfois être utile: j'ai horreur de 
    ' lancer puis fermer un fichier à plusieurs reprises
    Dim WS : Set Ws = CreateObject("Wscript.Shell")
    Ws.Run "Resultat1.txt", 1 , true
    Je précise qu'un nouveau fichier Resultat1.txt est créé laissant les 2 fichiers Source.txt et Resultat.txt tels qu'ils étaient.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  18. #18
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Pour ne pas avoir de limitations dans le tableau, on peut le définir ainsi : Dim NewText(),
    puis insérer juste avant la ligne 18 le code : ReDim Preserve NewText(I).

    De cette façon, à chaque itération dans la boucle Do While....Loop , la dimension du tableau est augmentée de 1
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  19. #19
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    Dans un post précédent, j'avais dit qu'il faut augmenter la taille du tableau NewText() pour traiter plusieurs lignes contenant le terme d:\dossier.
    j'avais bien pris note de cette remarque et avais mis pour valeur 29
    effectivement, avec la valeur 100 tout fonctionne.

    Je pense que ton script va me permettre d'aboutir mon projet

    encore merci !

  20. #20
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Je pense que ton script va me permettre d'aboutir mon projet
    Je te le souhaite de tout mon
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Fichiers] Créer et écrire dans un fichier .txt
    Par maserati dans le forum C++
    Réponses: 3
    Dernier message: 30/11/2008, 22h02
  2. Réponses: 2
    Dernier message: 11/08/2008, 11h00
  3. récupéré une ligne dans un fichier txt pour mettre dans msgbox
    Par fabrice44 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/02/2008, 15h01
  4. Réponses: 3
    Dernier message: 01/04/2007, 14h08
  5. Réponses: 4
    Dernier message: 08/04/2006, 10h10

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