Bonjour à tous,

le but de ce script dans les grandes lignes est de me réorganiser mes différents fichiers qui sont en *.txt en *.out pour que je puisse les utiliser plus facilement sous excel.

Mais voila j'ai une erreur permission refusée et je ne comprends pas pourquoi ?????

Nom : erreur vbs.png
Affichages : 1061
Taille : 21,5 Ko

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
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
Merci de votre aide