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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
| 'Set objArgs = WScript.Arguments
'Master=objArgs(0)
' Traitement des fichiers NBU_XXX.txt dont la structure est sous la forme:
' Champ1:valeur
' Champ2:valeur
' etc
' en:
' Champ1 Champ2 ...
' valeur valeur ...
' chaque valeur est séparée par une tabulation et chaque nouvelle ligne fait référence à un nouvel enregistrement.
' Un nouveau groupe est caractérisé par un saut de ligne (présence d'une ligne vide)
' Si la ligne d'entête change, le traitement s'arrête.
' Les autres lignes sont ignoréess.
' mémorise la partie gauche de la ligne dans ligne_entete et la partie droite dans ligne_valeur
'file_info = "NBU_adv_disk"
'file_path = "C:\temp\"
'INFILE = file_path & file_info & ".txt"
'OUTFILE= file_path & file_info & ".out"
INFILE = BrowseForFile
OUTFILE = Replace(INFILE,".txt",".out")
ForAppending=8
if INFILE = "" then
wscript.Quit
End if
Set fs = CreateObject("Scripting.FileSystemObject")
Set src = fs.OpenTextFile(INFILE)
Set tgt = fs.OpenTextFile(OUTFILE, ForAppending, true)
' Variables
entete_courant = ""
entete_precedent = ""
ligne_entete = ""
ligne_valeur = ""
rapport = ""
compteur_in = 0
compteur_out = 0
compteur_ignore = 0
ignore=0
to_flush_to_disk = ""
separateur = ":"
'separateur = "="
Do While Not src.AtEndOfStream
current_line= src.ReadLine
myarray=split(current_line,separateur,2)
Select Case uBound(myarray)
Case 1
' S'il ne s'agit pas d'un commentaire ajout des champs aux variables
Champ1 = trim(myarray(0))
Champ2 = trim(myarray(1))
Select Case Champ1
Case "#######Command used"
if rapport = "" then
rapport = "Traitement des résultats de " & trim(replace(Champ2,"#"," "))
Else
rapport = rapport & vbCrlf & vbCrlf & "Traitement des résultats de " & trim(replace(Champ2,"#"," "))
End if
Case "Exit status"
' Ecriture sur disque et constitution du rapport
if trim(Replace(to_flush_to_disk,vbcrlf," ")) <> "" then
tgt.Write to_flush_to_disk
rapport = rapport & vbCrlf & compteur_in & " lignes converties en " & compteur_out & " enregistrements dans " & OUTFILE
End if
' Réinitiaisation de toutes les variables
entete_courant = ""
entete_precedent = ""
ligne_valeur = ""
compteur_in = 0
compteur_out = 0
compteur_ignore = 0
to_flush_to_disk = ""
Case "The following hosts were found"
compteur_ignore = compteur_ignore + 1
Case Else
if InStr(entete_courant,Champ1) = 0 Then
' Le champ n'existe pas dans la ligne d'entete, on le rajoute
if entete_courant = "" Then
entete_courant = Champ1
Else
entete_courant = entete_courant & vbTab & Champ1
End if
End if
If ligne_valeur = "" and entete_courant <> "" Then
ligne_valeur = Champ2
Else
ligne_valeur = ligne_valeur & vbTab & Champ2
End If
compteur_in = compteur_in + 1
End Select
Case Else
' ligne vide : flush des variables existant en mémoire sur disque
if entete_courant <> "" and entete_courant <> entete_precedent then
if to_flush_to_disk = "" then
to_flush_to_disk = entete_courant
Else
to_flush_to_disk = to_flush_to_disk & vbcrlf & entete_courant
End if
entete_precedent = entete_courant
End if
if ligne_valeur <> "" then
'tgt.WriteLine ligne_valeur
to_flush_to_disk = to_flush_to_disk & vbcrlf & ligne_valeur
End if
entete_courant = ""
ligne_valeur = ""
compteur_out = compteur_out + 1
End Select
Loop
' Dernière écriture
if trim(Replace(to_flush_to_disk,vbcrlf," ")) <> "" then
tgt.Write to_flush_to_disk
rapport = rapport & vbCrlf & compteur_in & " lignes converties en " & compteur_out & " enregistrements dans " & OUTFILE
End if
' Fermeture
src.Close
tgt.Close
msgbox rapport
Function BrowseForFile()
With CreateObject("WScript.Shell")
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim tempFolder : Set tempFolder = fso.GetSpecialFolder(2)
Dim tempName : tempName = fso.GetTempName() & ".hta"
Dim path : path = "HKCU\Volatile Environment\MsgResp"
With tempFolder.CreateTextFile(tempName)
.Write "<input type=file name=f>" & _
"<script>f.click();(new ActiveXObject('WScript.Shell'))" & _
".RegWrite('HKCU\\Volatile Environment\\MsgResp', f.value);" & _
"close();</script>"
.Close
End With
.Run tempFolder & "\" & tempName, 1, True
BrowseForFile = .RegRead(path)
.RegDelete path
fso.DeleteFile tempFolder & "\" & tempName
End With
End Function |
Partager