IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

batch qui crée des groupes et des users [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Par défaut 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 : 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.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Par défaut
    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)

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

    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
    @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 : 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
    :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 : 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
    :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 un, heureusement d'ailleurs
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche des groupe d'un user ldap
    Par illegalsene dans le forum Langage
    Réponses: 0
    Dernier message: 15/01/2014, 14h26
  2. Réponses: 0
    Dernier message: 29/08/2008, 12h47
  3. Gestion des utilisateurs et des groupes
    Par sebinator dans le forum Sécurité
    Réponses: 4
    Dernier message: 28/02/2008, 10h08
  4. VBA Liste des Groups d'un User
    Par Keuf95 dans le forum Access
    Réponses: 2
    Dernier message: 24/08/2006, 14h38
  5. Créer des utilisateurs et des groupes(droits) sous SqlServer
    Par shako95 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/11/2005, 07h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo