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 :

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
ce script appelle donc un autre pour chaque groupe
voici le script "creagroupes":

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=
jusque la tous va bien, c'est après que cela se complique parce que je ne sais pas vraiment comment faire,
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:

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=
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
@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
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
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.