Page 1 sur 1

[R] Insérer le résultat d'une variable entre guillemets

Posté : lun. 29 sept. 2014 17:37
par gabinhocity
Bonjour à tout le monde,
Je suis entrain de faire un script qui va me permettre de changer le nom de compte utilisateur et ajoute le mot de passe en fonction de ma liste dans la base de donnée sous Windows 8.
Mes commandes sont les suivantes (je vous passe les détails de ma base de données avec les connexions requêtes qui fonctionnent bien)

Func modifier()


_SQLite_Query($bdd, 'SELECT Nom,Prenom,Login,Mdp FROM profs where Id_Unique = ' & '"' & $Valeur_Selectionnee & '"', $hQuery)
While (_SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK)
$Nom = $aRow[0]
$Prenom = $aRow[1]
$Login = $aRow[2]
$Mdp = $aRow[3]

WEnd


Local $iText = GUICtrlRead(GUICtrlRead($List_profs))

$COMPTE = StringSplit($iText, "|", 0)
$Id_Unique = $COMPTE[1]
$Nom = $COMPTE[2]
$Prenom = $COMPTE[3]
$Login = $COMPTE[4]
$Mdp = $COMPTE[5]


Run("wmic useraccount where name='Ancien' rename " & $Login)
MsgBox(1, "", "nom :" & $Nom & " Prénom :" & $Prenom & "Mot de passe :" & $Mdp) ;verifier les infos envoyées

$FullName = $aRow[0]&" "&$aRow[1]

Run('NET USER ' & $Login & ' ' & $Mdp & ' /fullname:' & '"' & $FullName & '"')
MsgBox(1, "", 'NET USER ' & $Login & ' ' & $Mdp & ' /fullname:' & '"' & $FullName & '"');verifier les infos envoyées


EndFunc ;==>modifier


Mon problème se situe au niveau de fullname de la 2eme commande run net user. Le champ envoyé est vide parce que le fullname doit être entre guillemet et je galère à trouver comment mettre le resultat de ma variable $fullname alors $nom et $prenom me retourne bien la valeur attendue.

Merci d'avance

Re: [..]Inserer le resultant d'une variable entre les guille

Posté : lun. 29 sept. 2014 18:18
par matwachich
Les règles de présentation!!! :evil:

Pour votre problème, il faut toujours essayer de bien raisonner :

Code : Tout sélectionner

; écrire la commande
net user login mdp /fullname: "fullname"

; puis la transformer en string
$sCmd = [color=#FF0000]'[/color]net user login mdp /fullname: "fullname"[color=#FF0000]'[/color]

; et enfin, ajouter les variables
$sCmd = 'net user [color=#FF0000]' & $sLogin & ' ' & $sMdp & '[/color] /fullname: "[color=#FF0000]' & $sFullname & '[/color]"'
Quelques petits conseils quand à SQLite:
Au lieux d'ajouter un champ id_Unique, pourquoi ne pas directement utiliser le champ par défaut rowid (qui est fait pour ça)?
Quand vous ajouter des données dans la base, penser à utiliser _SQLite_Escape

Re: [..]Inserer le resultant d'une variable entre les guille

Posté : mar. 30 sept. 2014 11:49
par gabinhocity
Merci pour ta réponse.
Je ne rajoute rien dans la Bd je prends juste des infos dessus pour changer le nom de compte et le mot de passe de l'utilisateur.

Tout fonctionne bien mais c'est seulement au niveau du Fullname que ca bug. le nom sort bien et le prenom aussi individuellement.
Mais je veux que le full n'aime soit de type en sortie :
net user login mdp /fullname: "nom prenom"

sauf que même en mettant ca :
$sCmd = 'net user ' & $sLogin & ' ' & $sMdp & ' /fullname: "' & $sFullname & '"'

Je n'ai rien dans le fullname par contre le logine et Mdp ca marche

Re: [..] Insérer le résultat d'une variable entre guillemets

Posté : mar. 30 sept. 2014 11:57
par Faco
Bonjour,

Utilise $nom et $prenom pour faire ton fullname alors, au lieu de $aRow[0] et $aRow[1].

et tu peux peut être tenter :

$FullName = '"' & $aRow[0] & " " & $aRow[1] & '"'

Re: [..] Insérer le résultat d'une variable entre guillemets

Posté : mar. 30 sept. 2014 12:26
par jguinch
Tu peux aussi te passer d'une commande externe telle que "net user", en passant par un UDF.
Celui-là est très bien : http://www.autoitscript.com/forum/topic ... count-udf/

Cela dit, je ne vois pas pour quelle raison ton code ne marche pas.
Quel est le résultat de la command "net user" ?
► Afficher le texte

Re: [..] Insérer le résultat d'une variable entre guillemets

Posté : mar. 30 sept. 2014 13:46
par gabinhocity
Merci à tous pour vos réponses mais apres des recherches j'ai reussi à ressoudre mon problème moi même.
C'est le Fullname qui me posait problème car son contenu devait être entre guillemet.
Pour ressourdre mon problème sur ma requête.

_SQLite_Query($bdd, 'SELECT Nom,Prenom,Login,Mdp, (Prenom ||" " ||Nom) AS fullname FROM profs where Id_Unique = ' & '"' & $Valeur_Selectionnee & '"', $hQuery)
While (_SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK)

$COMPTE = StringSplit($iText, "|", 0)
$Id_Unique = $COMPTE[1]
$Nom = $COMPTE[2]
$Prenom = $COMPTE[3]
$Login = $COMPTE[4]
$Mdp = $COMPTE[5]
$FullName = $COMPTE[6]

Donc a partir de se concat il me sort le nom et le prenom directement et je n'ai qu'a mettre dans le net user

Run('NET USER ' & $Login & ' ' & $Mdp & ' /fullname:' & '"' & $FullName & '"')

et la ca fonctionne

Re: [R] Insérer le résultat d'une variable entre guillemets

Posté : mar. 30 sept. 2014 15:35
par jchd
Un _SQLite_QuerySingleRow serait plus simple.
Eviter l'usage des *Query + boucle(s) en règle générale.

Re: [R] Insérer le résultat d'une variable entre guillemets

Posté : mar. 30 sept. 2014 20:20
par gabinhocity
Merci du conseil