Problème de portée de variables (VBS)

befadudesert Messages postés 17 Date d'inscription jeudi 22 février 2007 Statut Membre Dernière intervention 28 janvier 2008 - 18 sept. 2007 à 16:04
befadudesert Messages postés 17 Date d'inscription jeudi 22 février 2007 Statut Membre Dernière intervention 28 janvier 2008 - 24 sept. 2007 à 16:28
Bonjour à tous.

J'ai rédigé un programme qui analyse ce que sort la fonction cacls mais
j'ai des problèmes pour écrire les analyses dans un tableau HTML.
Lorsque j'execute partiellement le programme pas de problème mais le
programme entier il me dit qu'il ne connait pas la variable MonFic.

Voici le code :
'ligne normale : "C:\Nouveau COSMOS\fabienmoreau:(OI)(CI)F"
'ligne utilisateur sup. : " COSMOS\fabienmoreau:(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 ""
MonFic.writeLine "\"
MonFic.writeLine \"<CAPTION> Droits </CAPTION>\"
MonFic.writeLine \"----
\"
MonFic.writeLine \" Chemin du répertoire ou fichier |\"
MonFic.writeLine \"Groupe ou utilisateur ayant des droits |\"
MonFic.writeLine \"Lecture |\"
MonFic.writeLine \"Ecriture |\"
MonFic.writeLine \"Modification |\"
MonFic.writeLine \"Execution |\"
MonFic.writeLine \"Appropriation |\"
MonFic.writeLine \"Controle total |\"
MonFic.writeLine \"\"
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 \"----
\"
MonFic.writeLine \"" & chemin & ", \"
reste = right(Ligne,len(Ligne)-len(chemin)-1)
util = motChoisi(motChoisi(reste,\"\\",2),\":\",1)
MonFic.writeLine \"" & util & ", \"
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 \"" & "X" & ", \"
Else WScript.echo \"Ces droits ne sont pas hérités\"
MonFic.writeLine \"" & "-" & ", \"
End If
If Instr(droits,\"F\") <> 0 Then
Wscript.echo \"possede tous les droits\"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"\"

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 \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "-" & ", \"
MonFic.writeLine \"----
\"
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 \"\"
MonFic.writeLine \"----
\"
'nous traitons donc le cas même chemin que le précédent
MonFic.writeLine \"" & chemin & ", \"
WScript.echo \"C'est une ligne pour un nouvel utilisateur\"
Ligne=sansEspaces(Ligne)
Util=motChoisi(motChoisi(Ligne,\"\\",2),\":\",1)
MonFic.writeLine \"" & util & ", \"
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 \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
Else If Instr(Ligne,\"C\") <> 0 Then
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "X" & ", \"
MonFic.writeLine \"" & "-" & ", \"
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 \"" & "X" & ", \"
Else MonFic.writeLine \"" & "-" & ", \"
End If
If chiffre2=\"1\" Then
MonFic.writeLine \"" & "X" & ", \"
Else MonFic.writeLine \"" & "-" & ", \"
End If
If chiffre3=\"1\" Then
MonFic.writeLine \"" & "X" & ", \"
Else MonFic.writeLine \"" & "-" & ", \"
End If
If chiffre4=\"1\" Then
MonFic.writeLine \"" & "X" & ", \"
Else MonFic.writeLine \"" & "-" & ", \"
End If
If chiffre5=\"1\" Then
MonFic.writeLine \"" & "X" & ", \"
Else MonFic.writeLine \"" & "-" & ", \"
End If
MonFic.writeLine \"\"
End Sub

'cloture du tableau et du fichier HTML
MonFic.writeLine "
"
MonFic.writeLine ""
MonFic.writeLine "</HTML>"

'traitementLigne("C:\Nouveau COSMOS\fabienmoreau:(OI)(CI)(accŠs sp‚cialÿ:)")

Merci d'avance pour votre aide

3 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
18 sept. 2007 à 18:46
 Bonsoir,

J'ai un doute sur cette syntaxe:
'__________________________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

jean-marc
0
befadudesert Messages postés 17 Date d'inscription jeudi 22 février 2007 Statut Membre Dernière intervention 28 janvier 2008
19 sept. 2007 à 10:31
Bonjour,
oui c'est du aux nombreux tests que j'ai réalisés.
La fonction est ecrireDansFichier(chaine) et partout ou il y a MonFic.writeLine il faut le remplacer par ecrireDansFichier.
0
befadudesert Messages postés 17 Date d'inscription jeudi 22 février 2007 Statut Membre Dernière intervention 28 janvier 2008
24 sept. 2007 à 16:28
Up !
0
Rejoignez-nous