la structure du if dans un fichier .bat donc le if en bach
Forum Programmation : la structure du if dans un fichier .bat donc le if en bach
bonjour tout le monde,
tout d'abord, bonne fetes de fin d'année!
J'ai un ptit probleme en ce qui concerne un script en vbs qui creé des utilisateurs dans un environnement active directory (win serveur 2003)... Donc ils sont creé à partir du fichier .csv
Le fichier à en premiere colonne le nom (correspond à %%A),2ème colonne le prenom, 3ème l'année, 4ème l'OU, et derniere colonne le mot de passe (donc correspond à %%E)
Voilà mon script:
echo off
FOR /f "tokens=1,2,3,4,5 delims=;" %%A in (etudiants.csv) do (
If %%A=="3A"
then
dsadd user "CN=%%A,OU=%%D,DC=jmontuir,DC=com" -upn %%A -fn %%B -pwd %%E -memberof "CN=%%C,DC=jmontuir,DC=com" -profile "\\Montuir-d2mrpqw\Profil\%%C\%%A" -disabled no
mkdir "D:\Profil\%%C\%%A"
echo o| cacls D:\Profil\%%C\%%A /T /G %%A:f Administrateurs:f
Else
dsadd user "CN=%%A,OU=%%D,DC=jmontuir,DC=com" -upn %%A -fn %%B -pwd %%E -memberof "CN=%%C,DC=jmontuir,DC=com" -profile "\\Montuir-d2mrpqw\Profil\obligatoire" -disabled no
echo o| cacls D:\Profil\obligatoire /T /G %%A:f Administrateurs:f
End If
)
gpupdate
pause
rem Changement de mot de passe au prochain démarrage.
rem -mustchpwd
En faite, j'aimerais que les etudiant de 3A ai un profil itinerant et tout les autres un profil obligatoire! Mais mon if ne marche pas... Je ne comprends pas pourquoi car la structure a l'air correcte... pourriez vous m'aidez????
Merci d'avance,
jf
Il faut écrire rigoureusement le IF:
if condition (
' on met ce qu'on veut ici
) else (
' on met ce qu'on veut ici
)
En batch:
- tout s'exécute sur le même ligne, seules les parenthèses indiquent le multi-lignes.
Donc la 1ere "(" doit être sur la même ligne. " )", "else" et "(" soivent également être sur le même ligne
- pas de "then" ni de "endif"
merci, j'essayerai ca ce soir, car maintenant je vais aller à mon examen de droit... (hé oui , on a aussi un cours de droit en informatique...) :-(
Ok, je viens de tester le if et ca fonctionne, mais mnt un autre probleme arrive ca fais 1h que je cherche dans google la solution... Donc comme je n'ai tjs pas trouvé, je me tourne vers le forum! :-)
Donc j'ai mon "if":
If %%C=="3A"
et j'aimerais faire: soit l'année est égale à "3A" ou "3I"
donc j'ai essayé de faire:
if %%C=="3A" OR %%C=="3I" (
..... )
j'ai fait aussi:
if %%C=="3A" || %%C=="3I" (
..... )
Mais ca ne vas pas ....
Pourriez vous me donnez des élements de solutions à ce problème? svp
Merci d'avance,
jf
Et si tu faisais simplement :
if %%C=="3A" (
:123
....
)
if %%C=="3I" goto 123
Si vous pouviez m'éclairer un peu : c'est quoi cette variable : %%C et quand esqu'il faut mettre des " " sur le nom de la variable ?? exemple tu à fé : "3A"
Merci
donc en faite comme je l'ai dit plus haut, je crée mes utilisateurs a partir d'un fichier csv (séparé par des point virgule).
La variable %%C signifie qu'il lit la 3ème colonne.
"3A" signifie que l'élève est en 3ème année et qu'il fait comme étude Automation.
"3I" signifie qu'il est en 3ème année et qu'il etudie l'Informatique
Les " " servent à delimiter ce qu'il lit (je ne croit pas que ce soit obligatoire)
Je vais essayer la solution que tu ma dis ci-dessus, je te redis quoi si ca fonctionne ou pas.
Merci,
jf
les "" sont effectivement facultatifs. Ils servent lorsqu'il y a des espaces, car ceux-ci sont interprété par le batch comme étant un mot-clé suivant. Les guillement permettent de tout metre dans la comparaison.
pour les doubles %%, c'est surement parce qu'il est dans un FOR qui a besoin du %%C pour ne pas confondre avec une possible variable qui s'appelerait %C
Sinon comme le dit Dark_Silver, il faut jouer avec les GOTO pour faire des OU ou des ET.
ok merci bcp, le problème est mnt résolu :-)
Il y a 343 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
