[R] Recuperation de mot

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
yoyox
Niveau 2
Niveau 2
Messages : 29
Enregistré le : ven. 14 nov. 2014 09:19
Status : Hors ligne

[R] Recuperation de mot

#1

Message 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
Modifié en dernier par yoyox le jeu. 18 déc. 2014 15:49, modifié 2 fois.
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: Recuperation de mot

#2

Message par jbnh »

Règle de présentation d'un message svp !
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Y01
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 17 nov. 2014 10:46
Status : Hors ligne

Re: Recuperation de mot

#3

Message par Y01 »

Bonjour,

Voici la doc : Tuto RegExp
Y01
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Recuperation de mot

#4

Message par jguinch »

Merci de mettre le titre en conformité
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..]Recuperation de mot

#5

Message par jbnh »

Un _StringBetween entre "\\domaine.local\partage\ et " devrait le faire
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..]Recuperation de mot

#6

Message 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
yoyox
Niveau 2
Niveau 2
Messages : 29
Enregistré le : ven. 14 nov. 2014 09:19
Status : Hors ligne

Re: [..]Recuperation de mot

#7

Message 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)
yoyox
Niveau 2
Niveau 2
Messages : 29
Enregistré le : ven. 14 nov. 2014 09:19
Status : Hors ligne

Re: [..]Recuperation de mot

#8

Message 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
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..]Recuperation de mot

#9

Message 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
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..]Recuperation de mot

#10

Message 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)
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
yoyox
Niveau 2
Niveau 2
Messages : 29
Enregistré le : ven. 14 nov. 2014 09:19
Status : Hors ligne

Re: [..]Recuperation de mot

#11

Message 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
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R]Recuperation de mot

#12

Message par jguinch »

Code : Tout sélectionner

#Include <Array.au3>
$sScript = FileRead("script.vbs")

$aFolders = StringRegExp($sScript, "MapNetworkDrive.*\\([^\n\r""]+)", 3)
_ArrayDisplay($aFolders)
 
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
yoyox
Niveau 2
Niveau 2
Messages : 29
Enregistré le : ven. 14 nov. 2014 09:19
Status : Hors ligne

Re: [R] Recuperation de mot

#13

Message 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
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Recuperation de mot

#14

Message 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
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
yoyox
Niveau 2
Niveau 2
Messages : 29
Enregistré le : ven. 14 nov. 2014 09:19
Status : Hors ligne

Re: [R] Recuperation de mot

#15

Message 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
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Recuperation de mot

#16

Message 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 : \$
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] Recuperation de mot

#17

Message 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [R] Recuperation de mot

#18

Message par jguinch »

Ouah ! L’hôpital qui se fout de la charité ! :D
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre