Page 1 sur 1
[R] Recuperation de mot
Posté : jeu. 18 déc. 2014 09:39
par yoyox
Bonjour,
je cherche à récupérer les partages dans un script de connexion pour les mettre dans un fichier log,
j'ai regardé du coter de StringRegExp mais la doc et en anglais, j'ai donc un peu de mal
La parti concerné est en violet :
Code : Tout sélectionner
[color=#0000FF]'Suppression imprimantes et lecteurs réseaux
'Version 0.1 20090522 by Clockover
'*** Déclaration des variables
Dim ObjetNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
'Suppression des lecteurs réseaux
Set oDrives = WshNetwork.EnumNetworkDrives
For i = 0 to oDrives.Count - 1 Step 2
WshNetwork.RemoveNetworkDrive oDrives.Item(i), TRUE, TRUE
Next
'*** Permet de continuer le script même s'il y a une erreur
On Error Resume Next
'*** Definition du contenu de la variable
Set ObjetNetwork = CreateObject("WScript.Network")
'*** Connection des lecteurs réseaux
[/color]
[color=#BF00BF]ObjetNetwork.MapNetworkDrive "I:", "\\domaine.local\partage\partage01$"
ObjetNetwork.MapNetworkDrive "J:", "\\domaine.local\partage\partage02$"
ObjetNetwork.MapNetworkDrive "K:", "\\domaine.local\partage\partage03$"[/color]
[color=#0000FF]On Error GoTo 0
'*** Destruction des objets
Set ObjetNetwork = Nothing
WScript.Quit[/color]
Je cherche à récupérer les mot suivant :
partage01$
partage02$
partage03$
Pourriez-vous m'aider s'il vous plait, auriez-vous une docs en français sur StringRegExp ?
merci
Re: Recuperation de mot
Posté : jeu. 18 déc. 2014 09:42
par jbnh
Règle de présentation d'un message svp !
Re: Recuperation de mot
Posté : jeu. 18 déc. 2014 09:44
par Y01
Bonjour,
Voici la doc :
Tuto RegExp
Re: Recuperation de mot
Posté : jeu. 18 déc. 2014 10:13
par jguinch
Merci de mettre le titre en conformité
Re: [..]Recuperation de mot
Posté : jeu. 18 déc. 2014 11:38
par jbnh
Un _StringBetween entre "\\domaine.local\partage\ et " devrait le faire
Re: [..]Recuperation de mot
Posté : jeu. 18 déc. 2014 13:04
par Hugues
Salut,
On peut faire ça aussi:
► Afficher le texte
Code : Tout sélectionner
#include <StringConstants.au3>
$sString = "\\domaine.local\partage\partage01$"
$aResult = StringSplit($sString, "\")
For $i = 1 to $aResult[0]
If $aResult[$i] = "" Then
;Rien
Else
ConsoleWrite($aResult[$i] & @CRLF)
EndIf
Next
;Ou plus directement
ConsoleWrite($aResult[$aResult[0]] & @CRLF)
ou bien on liste les lecteurs réseaux et on récupère leur lettre et nom:
► Afficher le texte
Code : Tout sélectionner
#include <MsgBoxConstants.au3>
Local $aArray = DriveGetDrive("ALL")
If @error Then
; An error occurred when retrieving the drives.
MsgBox($MB_SYSTEMMODAL, "", "It appears an error occurred.")
Else
For $i = 1 To $aArray[0]
; Show all the drives found and convert the drive letter to uppercase.
MsgBox($MB_SYSTEMMODAL, "", StringUpper($aArray[$i]) & DriveMapGet($aArray[$i]))
Next
EndIf
Re: [..]Recuperation de mot
Posté : jeu. 18 déc. 2014 14:29
par yoyox
jbnh a écrit :Un _StringBetween entre "\\domaine.local\partage\ et " devrait le faire
_StringBetween ne me permet pas de récuperer le mot ?
Voila ce que j'ai réussi à faire, le problème c'est que j'arrive pas à couper la partie entre \\chdstell.local\ et ", si j'arrive à récupérer cette parti, je pourrais l’insérer dans mon fichier log
Code : Tout sélectionner
#include <File.au3>
#Include <string.au3>
$file = @ScriptDir & "\Modele.vbs"
FileOpen($file, 0)
For $i = 1 to _FileCountLines($file)
$line = FileReadLine($file, $i)
[color=#FF00FF]$test = _StringBetween($line, '"\\Mondom.local\', '"')[/color]
msgbox(0,'', $test)
Next
FileClose($file)
Re: [..]Recuperation de mot
Posté : jeu. 18 déc. 2014 14:30
par yoyox
J'ai réussi à bidouiller ça
Code : Tout sélectionner
#include <File.au3>
$file = @ScriptDir & "\Modele.vbs"
FileOpen($file, 0)
For $i = 1 to _FileCountLines($file)
$line = FileReadLine($file, $i)
$test0 = _StringBetween($line, '"\\mondom.local\', '"')
If $test0 <> 0 Then
$test = StringReplace($line, 'ObjetNetwork.MapNetworkDrive "', '')
$test2 = StringReplace($test, '"', '')
$test3 = StringReplace($test2, ',', '')
msgbox(0,'', $test3)
EndIf
Next
FileClose($file)
Ce qui me donne la lettre : le chemin
Re: [..]Recuperation de mot
Posté : jeu. 18 déc. 2014 14:41
par jguinch
yoyox a écrit :j'ai regardé du coter de StringRegExp mais la doc et en anglais, j'ai donc un peu de mal
Pas de panique, c'est tout frais, ça vient de sortir :
http://www.autoitscript.fr/forum/viewto ... 213#p91213
Merci JC
Re: [..]Recuperation de mot
Posté : jeu. 18 déc. 2014 15:01
par jbnh
yoyox a écrit :jbnh a écrit :Un _StringBetween entre "\\domaine.local\partage\ et " devrait le faire
_StringBetween ne me permet pas de récuperer le mot ?
Voila ce que j'ai réussi à faire, le problème c'est que j'arrive pas à couper la partie entre \\chdstell.local\ et ", si j'arrive à récupérer cette parti, je pourrais l’insérer dans mon fichier log
Code : Tout sélectionner
#include <File.au3>
#Include <string.au3>
$file = @ScriptDir & "\Modele.vbs"
FileOpen($file, 0)
For $i = 1 to _FileCountLines($file)
$line = FileReadLine($file, $i)
[color=#FF00FF]$test = _StringBetween($line, '"\\Mondom.local\', '"')[/color]
msgbox(0,'', $test)
Next
FileClose($file)
StringBetween retourne une array
Code : Tout sélectionner
#include <File.au3>
#Include <string.au3>
$file = @ScriptDir & "\Modele.vbs"
FileOpen($file, 0)
Local $hFileOpen = FileOpen($file, $FO_READ)
; Read the contents of the file using the handle returned by FileOpen.
Local $sFileRead = FileRead($hFileOpen)
$test = _StringBetween($sFileRead, '"\\domaine.local\partage\', '"')
_ArrayDisplay($test, "arraydisplay")
FileClose($file)
Re: [..]Recuperation de mot
Posté : jeu. 18 déc. 2014 15:49
par yoyox
Merci à vous tous et aussi a jguinch pour la doc en FR
des que je fini le script je l'arrange et je le poste ici pour les future qui cherche un script pour la création d'user
Re: [R]Recuperation de mot
Posté : jeu. 18 déc. 2014 16:25
par jguinch
Code : Tout sélectionner
#Include <Array.au3>
$sScript = FileRead("script.vbs")
$aFolders = StringRegExp($sScript, "MapNetworkDrive.*\\([^\n\r""]+)", 3)
_ArrayDisplay($aFolders)
Re: [R] Recuperation de mot
Posté : jeu. 18 déc. 2014 22:57
par yoyox
jguinch a écrit :Code : Tout sélectionner
#Include <Array.au3>
$sScript = FileRead("script.vbs")
$aFolders = StringRegExp($sScript, "MapNetworkDrive.*\\([^\n\r""]+)", 3)
_ArrayDisplay($aFolders)
Merci, en revenche j'ai une petite question,
pourrais-tu m'expliquer le fonctionnement de StringRegExp, ou, du moin de ce que tu as fait, car j'ai beau lire la doc que tu ma fourni, et je comprend pas trop
imagine que je souhaite dans la ligne suivante ne garder que la partie en violet comment ferait tu ?
Code : Tout sélectionner
ObjetNetwork.MapNetworkDrive "V:", "[color=#BF00FF]\\dom.local\public\partage[/color]"
merci encore pour l'aide j'avance pas mal
Re: [R] Recuperation de mot
Posté : jeu. 18 déc. 2014 23:31
par jguinch
Code : Tout sélectionner
#Include <Array.au3>
$sScript = 'ObjetNetwork.MapNetworkDrive "V:", "\\dom.local\public\partage"'
$aFolders = StringRegExp($sScript, '(\\\\[^\r\n"]+)', 3)
_ArrayDisplay($aFolders)
Pour décortiquer :
(\\\\[^\r\n"]+)
\\\\ -> correspond à \\ (l'antislash étant un caractère spécial, on l'échappe en ajoutant un \ devant)
[^\r\n"] -> correspond à "tout ce qui n'est pas \r, \n et ", donc prend tout jusqu'au caractère " ou fin/saut de ligne (le ^ sert de négation)
+ -> correpond à
au moins un fois (concerne ce qui est entre crochets)
Donc l'expression
extrait toutes les chaînes à partir de \\, puis tout ce qui n'est pas " ou fin de ligne
Pour y voir plus clair :
https://regex101.com/r/qL2zA9/1
Sinon, il y a un tuto sympa rédigé par Mikell, (dans la section Chat ???) :
http://www.autoitscript.fr/forum/viewto ... f=9&t=9795
Re: [R] Recuperation de mot
Posté : ven. 19 déc. 2014 10:29
par yoyox
jguinch a écrit :[^\r\n"]+)
\\\\ -> correspond à \\ (l'antislash étant un caractère spécial, on l'échappe en ajoutant un \ devant)
[^\r\n"] -> correspond à "tout ce qui n'est pas \r, \n et ", donc prend tout jusqu'au caractère " ou fin/saut de ligne (le ^ sert de négation)
+ -> correpond à au moins un fois (concerne ce qui est entre crochets)
Donc l'expression extrait toutes les chaînes à partir de \\, puis tout ce qui n'est pas " ou fin de ligne
Je comprend mieux déjà
Si j'ajoute un $ après le \n" ça enlèvera aussi les $
les () serves à faire prendre que la partie souhaitait, c'est a dire a partir de \\ ?
Encore merci à toi jguinch et aussi au autre
Re: [R] Recuperation de mot
Posté : ven. 19 déc. 2014 11:19
par jguinch
Dans une expression régulière, $ signifie fin de chaîne.
Si tu veux travailler avec le caractère $, tu devras l'échapper : \$
Re: [R] Recuperation de mot
Posté : ven. 19 déc. 2014 13:56
par mikell
jguinch, toujours à aller chercher des trucs tordus que personne ne comprend
Code : Tout sélectionner
$string = 'ObjetNetwork.MapNetworkDrive "V:", "\\dom.local\public\partage"'
msgbox(0,"", StringSplit($string, '"')[4] )
...
Code : Tout sélectionner
#Include <Array.au3>
$sScript = 'ObjetNetwork.MapNetworkDrive "I:", "\\domaine.local\partage\partage01$"' & @crlf & _
'ObjetNetwork.MapNetworkDrive "J:", "\\domaine.local\partage\partage02$"' & @crlf & _
'ObjetNetwork.MapNetworkDrive "K:", "\\domaine.local\partage\partage03$"'
$aFolders1 = StringRegExp($sScript, '(?m)([^"]+)"$', 3)
_ArrayDisplay($aFolders1)
;~ $aFolders2 = StringRegExp($sScript, '(?m)([^\\]+)"$', 3)
$aFolders2 = StringRegExp($sScript, '\w+\$', 3)
_ArrayDisplay($aFolders2)

Re: [R] Recuperation de mot
Posté : ven. 19 déc. 2014 15:24
par jguinch
Ouah ! L’hôpital qui se fout de la charité !
