Se connecter avec
S'enregistrer | Connectez-vous

la structure du if dans un fichier .bat donc le if en bach

Dernière réponse : dans Programmation

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

Autres pages sur : structure fichier bat bach

Lassé par la pub ? Créez un compte
Expert Programmation

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"

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

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
Expert Programmation

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.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde