Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[RESOLU]batch qui crée des groupes et des users
Auteur Message
Répondre en citant
Message [RESOLU]batch qui crée des groupes et des users 
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:

@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:

: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:

: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:

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



Dernière édition par flow_13 le Jeu 5 Nov 2009 - 11:27; édité 1 fois
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [RESOLU]batch qui crée des groupes et des users 
Bonne idée Okay



Visiter le site web du posteur
Répondre en citant
Message [RESOLU]batch qui crée des groupes et des users 
Hello,

Tout d'abord, une variable déclarée avec "set" est locale et est alors inconnue d'un autre batch, donc, quand tu "call"
un second batch et que tu compares 2 variables dont une déclarée avec le premier, ça ne peut pas fonctionner ....

Ensuite, pour tes variables, évites de les nommer uniquement en chiffres ex: 1 2 ou 3
Fais-le plutôt avec une lettre devant: VAR_1 VAR_2 etc
ou mieux encore, avec un nom équivoque pour ne pas mélanger tes variables !

Et pourquoi plusieurs batchs ???
un seul suffirait, avec pourquoi-pas un fichier suplémentaire pour écrire des données et les lire !




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Répondre en citant
Message [RESOLU]batch qui crée des groupes et des users 
ca y est, j'ai trouvé :p il n'y en fait pas de problème de variable avec set, local,etc ; tous fonctionne de ce côté là, c'était juste que j'avais mal placé certaines choses et le goto :eof
enfin voila je vous remet la solution pour ceux que ca intéresse (j'ai juste un peu réarrangé le script par rappport à l'ancien) Wink Merci tous de même à ceux qui m'ont répondu

voici le start (le batch que je lance, et puis j'attend, les autres sont appelés automatiquement):

Code:

@echo off

:STARTCREA
title Laboratoire 1 de Transmition et reseau
                                   
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  * et diviser par annne : info1.txt,info2.txt,... *
echo ********************************************

:INFO
echo *** Creation des groupes et membres informaticiens ***
call creagroupes info

:SECR
echo *** Creation des groupes secretariats ***
call creagroupes secre

:KINE
echo *** Creation des membres kinesitherapeutes ***
call creagroupes kine
goto :fini

:fini
cls
echo off
echo off
echo ________________________________________                         
echo  MERCI D AVOIR UTILISER NOTRE PROGRAMME     
echo          AU REVOIR !            
echo ________________________________________
echo ----------------------------------------   
pause


ensuite voila celui creagroupes :

Code:

:CREAGRPSTART
cls

:NBANNEES
set nba=3
if %1 equ kine set nba=4

echo ************************************
echo * Creation des groupes par annee   *
echo ************************************

for /L %%i IN (1,1,%nba%) DO (
   net localgroup Grp%1%%i /ADD
   )
for /L %%i IN (1,1,%nba%) DO (
    call creausers %1 %%i
   )

net localgroup
pause
net user
pause
:CREAGRPDONE
set nba=


et enfin le plus "compliqué" creausers:

Code:

:CREAUSRSTART
cls

:: Les noms des eleves doivent être mis dans ces fichiers, un nom par ligne
::   info.txt, secretariat.txt, kine.txt
:: il y a egalement un fichier par annee par exemple : info1.txt,info2.txt,etc
:: 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.

echo *********************************************
echo **    Creation des membres du groupe    *****
echo *********************************************

if %1 equ info (
set NumSect=1
goto :info
)
if %1 equ secre (
set NumSect=2
goto :secre
)
if %1 equ kine (
set NumSect=3
goto :kine
)

:INFO
REM %2 correspond a l'annee
set numero=0
if %2 equ 1 for /F %%L IN (info1.txt) DO (call :routine %%L %NumSect% %2 info)
if %2 equ 2 for /F %%L IN (info2.txt) DO (call :routine %%L %NumSect% %2 info)
if %2 equ 3 for /F %%L IN (info3.txt) DO (call :routine %%L %NumSect% %2 info)
goto :fin

:SECRE
set numero=0
if %2 equ 1 for /F %%L IN (secretariat1.txt) DO (call :routine %%L %NumSect% %2 secre)
if %2 equ 2 for /F %%L IN (secretariat2.txt) DO (call :routine %%L %NumSect% %2 secre)
if %2 equ 3 for /F %%L IN (secretariat3.txt) DO (call :routine %%L %NumSect% %2 secre)
goto :fin

:KINE
set numero=0
if %2 equ 1 for /F %%L IN (kine1.txt) DO (call :routine %%L %NumSect% %2 kine)
if %2 equ 2 for /F %%L IN (kine2.txt) DO (call :routine %%L %NumSect% %2 kine)
if %2 equ 3 for /F %%L IN (kine3.txt) DO (call :routine %%L %NumSect% %2 kine)
if %2 equ 4 for /F %%L IN (kine4.txt) DO (call :routine %%L %NumSect% %2 kine)
goto :fin

:fin
echo *************************************************
echo * creation des membres %1 de l'annee %2 termine *
echo *************************************************
pause
goto suite

:routine
REM si numero < 10 je met un "0" devant le numero 01;02,03 jusque 09 pour ce sera 10,11,etc
if %numero% lss 10 (
   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
:suite
goto :eof



voila ensuite il y a les batchs qui s'occupent de supprimer tous ca, et oui il y en faut bien, heureusement d'ailleurs Wink
ce sont exactement les memes a part qu'au lieu de mettre /add je met /del et je remplace partout ou j'ai écris "creation" par "suppression"

voila Wink



Message [RESOLU]batch qui crée des groupes et des users 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch