Bonjour à tous ,
je suis etudiant et je dois faire un batch (diviser en trois) qui crée des groupes (un groupe par section, et par exemple il y a une section info, secretariat, kine) et dans chacun de ses groupes je dois crée
les users dont le nom se trouvent, pour chaque section, dans un fichier nommé respectivement "info.txt", "secretariat.txt","kine.txt".
voici le "script" de départ :
ce script appelle donc un autre pour chaque groupe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 @echo off :START title Laboratoire 1 de Transmition et reseau echo ________________________________________ echo Laboratoire de Transmition et Reseau echo ________________________________________ echo ---------------------------------------- pause echo ******************************************** echo * Creation des groupes et de leurs membres * echo * pour les differentes sections à partir * echo * de noms stocker dans les fichiers * echo * info.txt,secretariat.txt, kine.txt,... * echo ******************************************** :INFO echo *** Creation des membres informaticiens *** call creagroupes info :SECR echo *** Creation des membres comptables *** call creagroupes secre :KINE echo *** Creation des membres kinesitherapeutes *** call creagroupes kine goto :fini :fini cls echo Merci d'avoir utilise ce script batch pause
voici le script "creagroupes":
jusque la tous va bien, c'est après que cela se complique parce que je ne sais pas vraiment comment faire,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 :CREAGRPSTART cls :NBANNEES set nba=3 if %1 equ kine nba=4 echo ************************************ echo * Creation des groupes par annee * echo ************************************ for /L %%i IN (1,1,%nba%) DO ( net localgroup Grp%1%%i /ADD call creausers %1 %%i ) pause echo ************************************* echo * Suppression des groupes par annee * echo ************************************* for /L %%i IN (1,1,%nba%) DO net localgroup Grp%1%%i /DEL pause :CREAGRPDONE set nba=
il y a sans doute des erreurs et c'est la que j'aurais besoin de vous (desole c'est un long comme message mais
comme ca, tout le monde voit bien comment s'enchaine le code)
voici le script creausers:
en fait le prof nous donne cette partie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 :CREAUSRSTART cls :: Les noms des eleves doivent être mis dans ces fichiers, un nom par ligne :: info.txt, secretariat.txt, kine.txt :: le script cree automatiquement des comptes du genre "nomEleve%i%axx" :: %i = numero correspondant a la section :: ex : info=1, secretariat=2,kine=3,... :: %a = année :: xx = numero d'eleve allant de 01 à 99. :NUMERODESECTION if %1 equ info set NumSect=1 else if %1 equ secre set NumSect=2 else if %1 equ kine set NumSect=3 echo ********************************************* echo ** Creation des membres du groupe ***** echo ********************************************* set numero=0 for /F %%L IN (info.txt) DO (call :routine %%L %NumSect% %2 info) REM %2 correspond a l'annee set numero=0 for /F %%L IN (secretariat.txt) DO (call :routine %%L %NumSect% %2 secretariat) set numero=0 for /F %%L IN (kine.txt) DO (call :routine %%L %NumSect% %2 kine) :routine if %numero% lss 10 ( REM si numero < 10 je met un "0" devant le numero 01;02,03 jusque 09 pour ce sera 10,11,etc net user %1%2%30%numero% /ADD net localgroup Grp%4%3 %1%2%30%numero% /ADD ) else ( net user %1%2%3%numero% /ADD net localgroup Grp%4%3 %1%2%3%numero% /ADD ) set /a numero+=1 REM ici je ne sais pas parce comment l'ordi sais qu'il est au bout du fichier et qu'il peut donc faire pause, net user,net localgroupe,etc REM pour verifier que tous c'est correctement realise et qu'il peut donc passer a la suite ?????????????????????? goto :eof REM ????????????????? REM quand j'ai fini de parcourir tous le fichier, je peux faire pause et net user pour regarder si tous c'est bien passer pause net user pause net localgroup Grp%4%3 echo ********************************************* echo ** Suppression des membres du groupe ***** echo ********************************************* set numero=0 for /F %%L IN (info.txt) DO (call :routine2 %%L %NumSect% %2 info) REM %2 correspond a l'annee set numero=0 for /F %%L IN (secretariat.txt) DO (call :routine2 %%L %NumSect% %2 secretariat) set numero=0 for /F %%L IN (kine.txt) DO (call :routine2 %%L %NumSect% %2 kine) :routine2 if %numero% lss 10 ( net user %1%2%30%numero% /DEL net localgroup Grp%4%3 %1%2%30%numero% /DEL ) else ( net user %1%2%3%numero% /DEL net localgroup Grp%4%3 %1%2%3%numero% /DEL ) set /a numero+=1 goto :eof REM ???????????? REM meme probleme qu'au dessus ??????????????? pause net user pause net localgroup Grp%4%3 goto CREAUSRDONE :CREAUSRDONE set numero=
voila ce qu'il nous avait donne et on devait de debrouiller avec cela et complèter en remplaçant eleve par le nom de l'eleve se trouvant dans le fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 @echo off set numero=0 for /F %%L IN (info.txt) DO (call :routine %%L info) for /F %%L IN (info.txt) DO (call :routine %%L secretariat) for /F %%L IN (info.txt) DO (call :routine %%L kine) :routine net user /add "eleve%numero%" /fullname:"%1" /"comment:section %2" set /a numero+=1 goto :eof
en ajoutant avec un numero pour la section avec un numero pour l'année et un numero pour les eleves (de 01 à ...) enfin comme j'ai voulu faire
dans mon script mais ca ne fonctionne pas, il y a aussi cette ligne "goto :eof" qui m'intrigue, c'est surement la qu'on regarde pour la fin de fichier,etc
mais je ne sais pas plus.... voila pourquoi j'ai besoin (je l'espere) de votre aide et de vos explications
merci.
Partager