begin process at 2012 02 16 15:15:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBScript

 > 

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


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

mardi 18 septembre 2007 à 16:04:58 | Problème de portée de variables (VBS)

BefaDuDesert

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 "<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>"

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

Merci d'avance pour votre aide
mardi 18 septembre 2007 à 18:46:23 | Re : Problème de portée de variables (VBS)

JMO

Membre Club


 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
mercredi 19 septembre 2007 à 10:31:55 | Re : Problème de portée de variables (VBS)

BefaDuDesert

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.
lundi 24 septembre 2007 à 16:28:05 | Re : Problème de portée de variables (VBS)


Cette discussion est classée dans : ligne, wscript, droits, monfic, writeline


Répondre à ce message

Sujets en rapport avec ce message

problème de code [ par penchu ] Bonjour à tous, je suis en stage dans une entreprise dans laquelle on m'a demandé de faire un programme de gestion des stocks avec un envoi de comma réservation IP [ par fr252040 ] Bonjour à tous, J'ai écrit un petit script qui, à partir d'un tableau excel contenant un certain nombre d'informations devrait effectuer la réservat Générer un fichier XML [ par chocolatgc ] Bonjour à tousje souhaite réaliser un bout de code afin de générer un fichier XML. Je procède comme suit :    Set fs = CreateObject("Scripting.FileSys utilisation d'une variable avec WshShell [ par pieherg ] Bonjour,j'essaie de positionner des droits sur des dossiers  pour chaque utilisateur dans un domainedonc mon script crée le dossier à partir d'une lis Répertoire [ par lcastell ] Bonjour ,je voudrais créer un répertoire en sauvegardant ayant le Nom comme sous-répertoire, voici ma sauvegarde :   ' Création du Fichier Nom+An.txt  Sauter Une Ligne Lors Dans Un Fichier Texte Lors Du Clique Sur Boutton [ par FaonManager ] Et oui me revoie là :p Donc j'ai résolue le problème de streamReader mais un problème d'écriture me parvient :'( Lorsque je clique sur mon bouton Probleme .txt [ par boboker ] Bonjour, Je suis débutant de chez débutant en VB, et dans le code qui suis je veux créer un nouveau fichier (ici piece2.txt) .txt à partir d'un fichie RECUPERER DANS UN TEXTBOX LES DONNEES D'UN FICHIER [ par dodyx ] salut, j'ai trouve ce code sur le forum et je j'aia dapter à mon application ça marche bien. comment doit-je faire pour récupérer les données du fichi lecture d'un fichier texte [ par plano ] Bonjour à tous et à toutes, Avec le code suivant, je parcours les lignes d'un fichier texte: [code=vb] Private Sub Button2_Click(ByVal sender As S


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,373 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales