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
ou bien on liste les lecteurs réseaux et on récupère leur lettre et nom:
► Afficher le texte

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)
&nbsp;
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à

Code : Tout sélectionner

StringRegExp($sScript, '(\\\\[^\r\n"]+)', 3)
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 :mrgreen:

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)
Image

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é ! :D