Bonjour à tous,
j'ai un soucis de portée de variables dans mon programme en vbs.
Lorsque je fais une copie partielle de mon script il s'exécute sans problème donc je ne sais pas d'où vient le problème ...

Voici le code entier. Le but de ce programme est d'analyser ce que ressort la commande cacls (pour ceux qui veulent comprendre l'utilité du programme) et de rediriger le tout dans un tableau html.
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
'ligne normale :             "C:\Nouveau COSMOS\*:(OI)(CI)F"
'ligne utilisateur sup. : "	          COSMOS\*:(OI)(CI)F"
'ligne de droits :           "                              FILE_WRITE_ATTRIBUTES"
 
'_________________________LECTURE d'un fichier_____________________________
'déclaration file system object
Dim fso
'instanciation
Set FSO = CreateObject("Scripting.FileSystemObject")
'on instance le fichier texte 
Set Ftxt = FSO.OpenTextFile("C:\Documents and Settings\fabienmoreau\test.txt")
'on parcours chaque ligne du fichier texte
Do While Not Ftxt.AtEndOfStream
      MaVariable = Ftxt.Readline
	  if MaVariable <> "" Then
		'WScript.echo MaVariable
		traitementLigne(MaVariable)
	End If
Loop
Ftxt.Close
 
'__________________________Ecrire d'un fichier_______________________________
Dim FSys, MonFic
FSys = CreateObject("Scripting.FileSystemObject")
MonFic = FSys.CreateTextFile("C:\droits.html")
 
'cette fonction permet de ne pas écraser ce qui avait écrit précédement dans le fichier
'Sub MonFic.writeLine(chaine)
	'Set FSys = CreateObject("Scripting.FileSystemObject")
	'Set f = FSys.OpenTextFile("C:\droits.html",8)
	'With f
		'MonFic.writeLine chaine
	'End With
'End Sub
 
'____________________________Préparation du fichier HTML_______________________
MonFic.writeLine "coucou"
MonFic.writeLine "<HTML>"
MonFic.writeLine "<HEAD>"
MonFic.writeLine "<TITLE>Récapitulatifs des droits des dossiers partagés du réseau de chez Lexibook</TITLE>"
MonFic.writeLine "</HEAD>"
MonFic.writeLine "<BODY>"
MonFic.writeLine "<TABLE BORDER=""" & "1" &""" ALIGN=" & """CENTER""" & ">"
MonFic.writeLine "<CAPTION> Droits </CAPTION>"
MonFic.writeLine "<TR ALIGN=""" & "CENTER""" & ">"
MonFic.writeLine "<TH> Chemin du répertoire ou fichier </TH>"
MonFic.writeLine "<TH> Groupe ou utilisateur ayant des droits</TH>"
MonFic.writeLine "<TH> Lecture </TH>"
MonFic.writeLine "<TH> Ecriture </TH>"
MonFic.writeLine "<TH> Modification </TH>"
MonFic.writeLine "<TH> Execution </TH>"
MonFic.writeLine "<TH> Appropriation </TH>"
MonFic.writeLine "<TH> Controle total </TH>"
MonFic.writeLine "</TR>"
MonFic.writeLine "coucou"
 
'_________________________Choix du mot dans la ligne___________________________
'cette fontion découpe les mots d'une chaine et sort le mot de la chaine choisi
'elle affiche également les mots de la chaine
'cette fonction permet de découper la chaine de caractères avec différentes sortes de séparateurs
'cette fonction gère également lorsqu'il y a plusieurs séparateurs à la suite
Function motChoisi(chaine,separateur,numMot)
	chaineU=chaine
	cpt = 1
	nb = -1
	Do While nb <> 0
		'nb renvoie le premier caractère " " trouvé dans la chaine
		nb=Instr(chaineU,separateur)
		'si aucun espace a été trouvé
		If nb <> 0 Then
			'un espace est trouvé comme mot
			If nb = 1 Then
				cpt = cpt-1
				chaineU = right(chaineU, len(chaineU)-1)
			Else
				mot_courant = left(chaineU, nb-1)
				If numMot=cpt Then
					motChoisi=mot_courant
				End If
			End If
			chaineU=right(chaineU, len(chaineU) - nb+1)
			cpt = cpt+1
		Else
			If numMot=cpt Then
					motChoisi=chaineU
			End If
		End If
	Loop
End Function
 
'__________________________Traitement de chaque ligne_________________________
Sub traitementLigne(Ligne)
	'premiere ligne'
	If left(Ligne,1) <> " " Then
		'WScript.echo "vous etes sur la première ligne"
		chemin = motChoisi(Ligne," ",1)
		MonFic.writeLine "<TR>"
		MonFic.writeLine "<TD>" & chemin & "</TD>"
		reste = right(Ligne,len(Ligne)-len(chemin)-1)
		util = motChoisi(motChoisi(reste,"\",2),":",1)
		MonFic.writeLine "<TD>" & util & "</TD>"
		domaineEtUtil=motChoisi(reste,":",1)
		droits = right(reste,len(reste)-len(domaineEtUtil)-1)
		WScript.echo "chemin : " & chemin
		'WScript.echo "reste _" & reste
		'Si nomDeDomaine\NomUtilisateur:droits
		WScript.echo "Voici l'utilisateur ou le groupe: " & util
		WScript.echo "Voici les droits : " & droits
 
		'On s'occupe maintenant des droits
		If Instr(droits,"(CI)") <> 0 OR Instr(droits,"(IO)") <> 0 OR Instr(droits,"(OI)") <> 0 Then
			WScript.echo "Ces droits sont hérités"
			MonFic.writeLine "<TD>" & "X" & "</TD>"
		Else WScript.echo "Ces droits ne sont pas hérités"
			MonFic.writeLine "<TD>" & "-" & "</TD>"
		End If
		If Instr(droits,"F") <> 0 Then
			Wscript.echo "possede tous les droits"
			MonFic.writeLine "<TD>" & "X" & "</TD>"
			MonFic.writeLine "<TD>" & "X" & "</TD>"
			MonFic.writeLine "<TD>" & "X" & "</TD>"
			MonFic.writeLine "<TD>" & "X" & "</TD>"
			MonFic.writeLine "<TD>" & "X" & "</TD>"
			MonFic.writeLine "</TR>"
 
		Else If Instr(droits,"C") <> 0 Then
				WScript.echo "ne possèdent pas tous les droits"
				Wscript.echo "droit de modification"
				WScript.echo "droit de lecture"
				WScript.echo "droit d'écriture"
				MonFic.writeLine "<TD>" & "X" & "</TD>"
				MonFic.writeLine "<TD>" & "X" & "</TD>"
				MonFic.writeLine "<TD>" & "X" & "</TD>"
				MonFic.writeLine "<TD>" & "X" & "</TD>"
				MonFic.writeLine "<TD>" & "-" & "</TD>"
				MonFic.writeLine "<TR>"
			Else If Instr(droits,"(accŠs sp‚cialÿ:)") <> 0 Then
			Wscript.echo "On doit aller voir plus loin"
				End If
			End If
		End If
	'pas ligne normale donc soit ligne utilisateur sup. soit ligne de droits
	Else
	'ligne utilisateur sup.
		If Instr(Ligne,"\") Then
			MonFic.writeLine "</TR>"
			MonFic.writeLine "<TR>"
			'nous traitons donc le cas même chemin que le précédent
			MonFic.writeLine "<TD>" & chemin & "</TD>"
			WScript.echo "C'est une ligne pour un nouvel utilisateur"
			Ligne=sansEspaces(Ligne)
			Util=motChoisi(motChoisi(Ligne,"\",2),":",1)
			MonFic.writeLine "<TD>" & util & "</TD>"
			domaineEtUtil=motChoisi(reste,":",1)
			droits = right(reste,len(Ligne)-len(domaineEtUtil)-1)
			WScript.echo "droits et nouvelles regles pour " & Util
			WScript.echo "droits " & droits
			If Instr(Ligne,"F") <> 0 Then
				Wscript.echo "possede tous les droits"
				MonFic.writeLine "<TD>" & "X" & "</TD>"
				MonFic.writeLine "<TD>" & "X" & "</TD>"
				MonFic.writeLine "<TD>" & "X" & "</TD>"
				MonFic.writeLine "<TD>" & "X" & "</TD>"
				MonFic.writeLine "<TD>" & "X" & "</TD>"
				Else If Instr(Ligne,"C") <> 0 Then
					MonFic.writeLine "<TD>" & "X" & "</TD>"
					MonFic.writeLine "<TD>" & "X" & "</TD>"
					MonFic.writeLine "<TD>" & "X" & "</TD>"
					MonFic.writeLine "<TD>" & "X" & "</TD>"
					MonFic.writeLine "<TD>" & "-" & "</TD>"
					WScript.echo "ne possèdent pas tous les droits"
					Wscript.echo "droit de modification"
					WScript.echo "droit de lecture"
					WScript.echo "droit d'écriture"
					Else If Instr(Ligne,"(accŠs sp‚cialÿ:)") <> 0 Then
						'le GUID permet de faciliter la mise en page du tableau HTML
						'code : si présent 1 si non présent : 0
						'lecture ecriture modification execution appropriation
						'     1            1               1                   1                     1
						GUID = 0
						Wscript.echo "On doit aller voir plus loin"
						End If
					End If
			End If
		'ligne de droits
		Else
			Ligne=sansEspaces(Ligne)
			analyseDroits(Ligne)
		End If
	End If
End Sub
 
Function sansEspaces(mot)
	Do While left(mot,1) = " "
			mot=right(mot,len(mot)-1)
	Loop
	sansEspaces=mot
End Function
 
'Récapitulatif des droits dont nous avons besoin
'+controle total : F
'-controle total: C
'+lecture : READ_CONTROL
'+ecriture: FILE_WRITE_DATA
'+executer: FILE_EXECUTE
'changement appropriation: WRITE_OWNER
 
Sub analyseDroits(Ligne)
	If Ligne = "READ_CONTROL" Then
		WScript.echo "vous avez les droits de lecture"
		GUID = GUID + 10000
	End If
	If Ligne = "FILE_WRITE_DATA" Then
		Wscript.echo "Vous avez le droit d'écriture"
		GUID = GUID + 01000
	End If
	If Ligne = "DELETE" Then
		WScript.echo "vous avez le droit d'appropriation"
		GUID = GUID + 00100
	End If
	If Ligne = "FILE_EXECUTE" Then
		WScript.echo "Vous avez le droit d'execution"
		GUID = GUID + 00010
	End If
	If Ligne = "WRITE_OWNER" Then
		WScript.echo "vous avez le droit d'appropriation"
		GUID = GUID + 00001
	End If
	analyseGUID GUID
End Sub
 
Sub analyseGUID(nombre)
	chiffre1 = mid(GUID, 1,1)
	chiffre2 = mid(GUID, 2,1)
	chiffre3 = mid(GUID, 3,1)
	chiffre4 = mid(GUID, 4,1)
	chiffre5 = mid(GUID, 5,1)
	If chiffre1="1" Then
		MonFic.writeLine "<TD>" & "X" & "</TD>"
	Else MonFic.writeLine "<TD>" & "-" & "</TD>"
	End If
	If chiffre2="1" Then
		MonFic.writeLine "<TD>" & "X" & "</TD>"
	Else MonFic.writeLine "<TD>" & "-" & "</TD>"
	End If
	If chiffre3="1" Then
		MonFic.writeLine "<TD>" & "X" & "</TD>"
	Else MonFic.writeLine "<TD>" & "-" & "</TD>"
	End If
	If chiffre4="1" Then
		MonFic.writeLine "<TD>" & "X" & "</TD>"
	Else MonFic.writeLine "<TD>" & "-" & "</TD>"
	End If
	If chiffre5="1" Then
		MonFic.writeLine "<TD>" & "X" & "</TD>"
	Else MonFic.writeLine "<TD>" & "-" & "</TD>"
	End If
	MonFic.writeLine "</TR>"
End Sub
 
'cloture du tableau et du fichier HTML
MonFic.writeLine "</TABLE>"
MonFic.writeLine "</BODY>"
MonFic.writeLine "</HTML>"
Merci de votre aide car je suis dans l'impasse