Retranscription PHP / VBScript

Fermé
♦Umay♦ - Modifié par ♦Umay♦ le 20/02/2017 à 21:42
 ◆Umay◆ - 21 févr. 2017 à 00:44
Bonjour,

J'ai un code php que j'aimerais retranscrire en VBScript mais j'ai vraiment du mal. Le but est de à partir de la casse d'un nom et d'un prenom, le script sache où mettre le prenom et le nom où il faut. En php, j'ai pris une variable $name pour exemple, en VBScript, il lira un fichier contenant des noms ligne par ligne.

En VBScript, j'ai de erreur de type ')' attendu ; et je n'arrive vraiment pas à les résoudre.

Voici le php :
    $temp = explode(" ", $name, 2);
if (strcmp($temp[0], strtoupper($temp[0])) === 0)
{
$Nom= $temp[0];
$Prenom = $temp[1];
}
else
{
$Nom = $temp[1];
$Prenom = $temp[0];
}


?>


Et voici un morceau du VBScript que j'ai tenté de faire :
   Dim name 'as String
temp = split(" ", name, 2)
Dim Nom 'as String
Dim Prenom 'as String

Do Until objFile.AtEndofStream

if (StrComp(temp[0], Ucase(temp[0]) = 0) Then
Nom = temp[0];
Prenom= temp[1];

else
Nom= temp[1];
Prenom= temp[0];

End If

Strline=objFile.ReadLine

osn=Nom

oGivenName=Prenom

oUname = Left(oGivenName,1) & "." & osn
A voir également:

2 réponses

jordane45 Messages postés 38467 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 avril 2025 4 741
20 févr. 2017 à 23:04
Bonjour,

Plusieurs erreurs.... l'utilisation de [] au lieu de () pour les array en vbscript...
Les points virgules en fin de ligne....
Les parenthèses en trop et/ou mal placées ....
L'ordre des arguments incorect dans l'appel de la fonction split ...
etc..etc...

Bref,
voici un début de correction :
Dim name 'as String

name = "unprenom UNNOM"

temp = split(name," ", 2)
Dim Nom 'as String
Dim Prenom 'as String


if StrComp(temp(0), Ucase(temp(0))) = 0 Then
Nom = temp(0)
Prenom= temp(1)

else
Nom= temp(1)
Prenom= temp(0)

End If

Je te laisse adapter le reste de ton code en t'appuyant sur ça
0
En effet les erreurs sont nombreuses.
Le code fonctionne. Merci beaucoup ! En revanche, il prend en compte la variable name, et lorsque je l'enlève afin de lui demander de lire le fichier, il veut pas le ligne par ligne. Je redirige pourtant vers ce dernier
Set objFile=objFSO.OpenTextFile("C:\Users\Administrateur\Desktop\Fichier.txt")

/* Et je lui demande de lire ligne par ligne */
Do Until objFile.AtEndofStream


Un tout dernier petit coup de main ? Il me reste donc juste cela à faire et ce sera parfait. :)
0
jordane45 Messages postés 38467 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 avril 2025 4 741
21 févr. 2017 à 00:07
Montre le code complet....
Le petit bout que tu montres ne me permet pas de me faire une idée de ton souci
0
provider="LDAP://"

OU = "OU=UO,"

domain = "DC=DOM, DC=FR"

oClass = "User"

oCN = "CN="


ohomeDrive="E:"
ohomeDirectory="\\DOM\UO\"


oprofil="\\DOM\Profils\"
odomain="DOM.fr"
'oscript="OFCSCAN.BAT"



Set objFSO=CreateObject("Scripting.FileSystemObject")
Set objFile=objFSO.OpenTextFile("C:\Users\Administrateur\Desktop\Fichier.txt")



Dim name 'as String

name = "Unprenom UNNOM"
temp = split(name," ", 2)
Dim Nom 'as String
Dim Prenom 'as String

Do Until objFile.AtEndofStream

if StrComp(temp(0), Ucase(temp(0))) = 0 Then
Nom = temp(0)
Prenom= temp(1)

else
Nom= temp(1)
Prenom= temp(0)

End If

Strline=objFile.ReadLine

osn=Nom

oGivenName=Prenom

oUname = Left(oGivenName,1) & "." & osn


Set objDomain = GetObject("LDAP://OU=UO,DC=DOM,DC=FR")
Set objUser = objDomain.Create(oClass, oCN & oGivenName & " " & osn)

'Affectation à l'objet utilisateur
objUser.Put "sAMAccountName", oUname
objUser.Put "UserPrincipalName", oUname & "@" & odomain
objUser.Put "sn", osn
objUser.Put "GivenName", oGivenName
objUser.Put "displayName", oGivenName & " " & osn
objUser.Put "description", "DOM"

'Validation des données
objUser.SetInfo


objUser.Put "profilePath", oprofil & oUname
'objUser.Put "scriptPath", oscript

'Validation des données
objUser.SetInfo

'Set groupe = GetObject(provider & "CN=GpeUO,OU=UO,DC=DOM,DC=FR")
'groupe.Add (provider & oCN & oGivenName & " " & osn & ",OU=UO,DC=DOM,DC=FR")


objUser.AccountDisabled=false

loop

WScript.Echo("Ajouts terminés")
objFile.Close


Le code fait-il également les noms avec espace (Prenom LE NOM) ? Il s'agit d'un détail, pas forcément très important.
0
jordane45 Messages postés 38467 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 avril 2025 4 741 > ♦Umay♦
21 févr. 2017 à 00:34
... tu copies/colles dans chercher à comprendre !
Normal qu'il t'affiche Unprenom UNNOM
Sachant que tu as laissé :
Dim name 'as String

name = "Unprenom UNNOM"
temp = split(name," ", 2)


Ne penses tu pas que tu devrais (enfin je suppose...) récupérer le "name" depuis ton fichier ? Et donc .. placer ce code DANS TA BOUCLE et non AVANT comme c'est le cas actuellement ??
Je dirais même ... après le
Strline=objFile.ReadLine


Au passage .. je serais toi.. je regarderai ce que contient la variable Strline

Car là .. d'où viennent ces variables : 'Nom Prenom et oGivenName ???
osn=Nom
oGivenName=Prenom
oUname = Left(oGivenName,1) & "." & osn
0
Oui je l'avais laissé ici. Mais en l'enlevant, c'est là qu'il y avait erreur.

Nom, Prenom c'est les variables qui ont été affectées dans le if. oGivenName c'est l'objet du prenom dans un serveur windows non ?

Je revérifierai donc demain. Merci pour votre aide
0