J'ai pas compris ton message...
Version imprimable
J'ai pas compris ton message...
Je ne comprens pas ton problème de windows actif.
Si tu peux lancer un bat, faire un net use, etc.. Ton windows est actif.
C'est quoi un windows qui n'est pas actif ???
En faite, après le IPK et / ATO, je voulais juste verifié si la clés CD d'installation de Windows à bien activé la version de Windows
OK j'ai compris !
Il y a 2 méthodes : (Testé sous VISTA)
La première ouvre une fenêtre (après quelques secondes) qui te comfirme que ton windows est actif ou non.
La deuxième pour contourner la fenêtre qui s'ouvre, qui t'écris le résultat dans un fichier. Que tu peux traiter par la suite.Code:slmgr/xpr
AmicalementCode:cscript C:\\Windows\\System32\\slmgr.vbs -xpr > actif.txt
Un grand merci. Y'a peu d'information sur le sujet. Je rencontre quelques souci avec mes boucles de fin mais je vais essayé de trouver pourquoi elle boucle.
Bonjour !
je vais encore avoir besoin de vos conseils avisés . Je voulais savoir si il était possible de utiliser %1 et %2 pour récupérer les valeurs des deux variables (en rouge) afin de les utilisers par la suite (sachant que les messages dépendront de l'étape du script) (l'utilisation est en Vert)
Code:
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116 @title testmettreERRORLEVELDANSVAR.bat @echo off cls set chemin= C:\Users\%USERNAME%\Desktop set serial=XXXX-XXXXX-XXX-XXXX-XXXXX ( echo. ) > %chemin%\resultat.txt cls ( echo. --------------------------------------------------------------------------------------------------------------------------------------------------------------------- echo. activation windows echo. --------------------------------------------------------------------------------------------------------------------------------------------------------------------- echo. ) >> %chemin%\resultat.txt ( echo. echo. echo. ******************************************************* INITIALISATION VARMOBILE ******************************************************* echo. echo. ) >> %chemin%\resultat.txt Set varmobile=* echo varmobile initialisé: %varmobile% >> %chemin%\resultat.txt ( echo. echo. echo. ************************************************************** IPK ************************************************************** echo. echo. ) >> %chemin%\resultat.txt cscript //B "%windir%\system32\slmgr.vbs" /ipk %serial% >> %chemin%\resultat.txt set msg1 =Aucune erreur lors de l'IPK set mgs2=Erreur lors de l'IPK call:fonction echo ERRORLEVEL de IPK: %ERRORLEVEL% >> %chemin%\resultat.txt echo. >> %chemin%\resultat.txt SET varmobile=%ERRORLEVEL% echo varmobile reinitialisé: %varmobile% >> %chemin%\resultat.txt echo. >> %chemin%\resultat.txt SET varmobile=* echo réinitialisation varmobile: %varmobile% >> %chemin%\resultat.txt ( echo. echo. echo ************************************************************** ATO ************************************************************** echo. echo. ) >> %chemin%\resultat.txt cscript //B "%windir%\system32\slmgr.vbs" /ato echo ERRORLEVEL de ATO: %ERRORLEVEL% >> %chemin%\resultat.txt set msg1 =Aucune erreur lors de l'ATO set mgs2=Erreur lors de l'ATO call :fonction echo. >> %chemin%\resultat.txt SET varmobile=%ERRORLEVEL% echo variablemobile: %varmobile% >> %chemin%\resultat.txt echo. >> %chemin%\resultat.txt SET varmobile=* echo varmobile reinitialisé: %varmobile% >> %chemin%\resultat.txt echo. >> %chemin%\resultat.txt exit RM Fonction qui gère la gestion d'erreur après effacement du fichier :fonction if %varmobile% EQU 0 ( echo %msg1% >> %chemin%\resultat.txt ) if %varmobile% NEQ 0 ( echo %msg2% >> %chemin%\resultat.txt ) RM Reinitilisation des deux variables avec une étoile set msg1=* set msg2=* Goto:eof
Edit 14H34:
J'ai peut être trouvé un moyen de m'en sortir pour la partie activation de Windows (après faut que je rajoute ce que tu m'as dis pour vérifier l'état de Windows). Il faut encore supprimé les parties inutiles, trouver le moyen de l'adapté pour l'autre partie (suppression de l'utilisateur)
Code:
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
87
88
89
90
91
92
93
94
95
96
97
98
99 @echo off cls set chemin= C:\Users\%USERNAME%\Desktop\ set doc=docessai.txt set serial=XXXX-XXXXX-XXXX-XXXXX-XXXXX REM pour supprimé un éventuel ancien fichier du même nom ( echo. ) > %chemin%%doc% cls REM Mettre cette entete au debut du fichier log ( echo. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- echo. activation windows echo. -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- echo. echo. ) >> %chemin%%doc% REM entete pour l'initialisation de la variable utilisee comme mobile ( echo. echo. echo. ***************************************************************** INITIALISATION VARMOBILE ***************************************************************** echo. echo. ) >> %chemin%%doc% REM entete pour l'etape IPK ( echo. echo. echo. ***************************************************************************** IPK ***************************************************************************** echo. echo. ) >> %chemin%%doc% REM Mise en place de la clés d'activation cscript //B "%windir%\system32\slmgr.vbs" /ipk %serial% echo IPK : %ERRORLEVEL% >> %chemin%%doc% set message1=IPK reussit. Activation de Windows set message2=Echec de l'IPK. L'activation de Windows ne s'est pas faite call :fonctiontest REM entete pour l'etape ATO ( echo. echo. echo ****************************************************************************** ATO ****************************************************************************** echo. echo. ) >> %chemin%%doc% REM Activation de Windows avec la clés mise en place auparavant cscript //B "%windir%\system32\slmgr.vbs" /ato echo ATO: %ERRORLEVEL% >> %chemin%%doc% set message1=ATO reussit. Activation de Windows set message2=Echec de l'ATO. L'activation de Windows ne s'est pas faite call :fonctiontest exit :fonctiontest if %ERRORLEVEL% EQU 0 ( echo %message1% ) >> %chemin%%doc% if %ERRORLEVEL% NEQ 0 ( echo %message2% ) >> %chemin%%doc% set message1=* set message2=* ( echo reinimsg1 : %message1% echo reinimsg2 : %message2% ) >> %chemin%%doc% goto:eof
Salut,
effectivement tu pouvais simplement faire :
et ensuite pour la sauvegarde :Code:call :fonction %msg1% %msg2%
AmicalementCode:
1
2
3
4
5
6
7
8
9 :fonction if %varmobile% EQU 0 ( echo %1>> %chemin%\resultat.txt ) if %varmobile% NEQ 0 ( echo %2 >> %chemin%\resultat.txt )
Merci bien. J'arrivais pas à savoir comment l'utiliser pour éclaircir le code
Voici le code qui fonctionne à 100 % sur
Code:
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157 @echo off cls @set chemindossier=D:\log##%computername%\ @set doctxt=scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt @set cles=XXXX-XXXXX-XXXX-XXXXX-XXXXX @set utilisasupp=Utilisateur @dir %chemindossier% if %ERRORLEVEL% NEQ 0 ( @set message1=Le dossier %chemindossier% n'a pas ete cree. Les fichiers logs ne seront pas disponible. @call :creationdossier ) cls echo. > %chemindossier%%doctxt% ( echo Date de creation: %DATE% echo. echo Heure creation: %time:~0,8% echo. echo Nom utilisateur: %USERNAME% echo. echo Nom ordinateur: %COMPUTERNAME% echo. echo. echo. echo. echo. echo. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- echo. FICHIER LOG echo. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- echo. echo. echo. echo. echo ************************************ activation windows ************************************************* echo. echo. ) >> %chemindossier%%doctxt% cscript //B "C:\Windows\system32\slmgr.vbs" /ipk %cles% echo ERREUR RENVOYE IPK : %ERRORLEVEL% >> %chemindossier%%doctxt% set message1=IPK reussit. Activation de Windows set message2=Echec de l'IPK. L'activation de Windows ne s'est pas faite call :test cscript //B "%windir%\system32\slmgr.vbs" /ato echo ERREUR RENVOYE ATO: %ERRORLEVEL% >> %chemindossier%%doctxt% set message1=ATO reussit. Activation de Windows set message2=Echec de l'ATO. L'activation de Windows ne s'est pas faite call :test ( echo. echo. echo. echo.************************************* gestion utilisateur ************************************************ echo. echo. ) >> %chemindossier%%doctxt% net user Administrateur /active:yes set message1=Le compte Administrateur Local est bien active set message2=Le compte Administrateur Local n'est pas active call :test net user Utilisateur IF %ERRORLEVEL% NEQ 0 ( echo L'utilisateur %utilisasupp% n'existe pas ou a deja ete supprime >> %chemindossier%%doctxt% ) IF %ERRORLEVEL% EQU 0 ( echo L'utilisateur %utilisasupp% existe : traitrement de la suite >> %chemindossier%%doctxt% ) exit :creationdossier ::création du dossier par la commande MD avec pour chemin la variable %chemindossier% (qui est au début du script) md %chemindossier% ::Si il y'a une erreur (donc que ERRORLEVEL est différent de 0) alors il crée un log sur le bureau de l'utilisateur qui execute le script et lui indique que le dossier n'a pas été crée et que le script va continuer à s'executer mais il n'y aura pas de log if %ERRORLEVEL% NEQ 0 ( echo %message1% ) > C:\Users\%USERNAME%\Desktop\log.txt :: On réinitialise la variable %message1% car on la réutilise plus tard dans le script set message1=* :: Retourne à l'appel de la fonction pour la continuation du script goto:eof :test if %ERRORLEVEL% EQU 0 ( echo %message1% ) >> %chemindossier%%doctxt% if %ERRORLEVEL% NEQ 0 ( echo %message2% ) >> %chemindossier%%doctxt% set message1=* set message2=* ( echo reinimsg1 : %message1% echo reinimsg2 : %message2% ) >> %chemindossier%%doctxt% goto:eof
Dés que j'essaye de faire appel à la fonction :test , j'ai des erreurs qui se crée. Surement qu'il faut utiliser la fonction d'extension mais j'ai essayé partout et pour l'instant jamais réussi à le faire fonctionner correctement.
Pour ce qui est de la fonction vbs qui active Windows, elle me crée effectivement un fichier mais je n'arrive pas à la découper comme je le souhaiterai (c'est à dire récupérer seulement la dernière ligne & remettre des "e" à la place des "," ).
pour récuperer la dernière ligne de ton fichier :
AmicalementCode:
1
2
3 setlocal enabledelayedexpansion enableextensions for /f "delims=" %%a in (actif.txt) do (set $dlign="%%a") echo DERNIERE LIGNE = !$dlign!
ça marche niquel cette solution pour la récupération de la dernière ligne :=) . La seule chose qui me pose un souci c'est qu'il a falloir une boucle (encore une ) pour transformer les caractères spéciaux en "e" et autres.
voila ou j'en suis actuellement pour la clarification de mon code :
Code:
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244 @echo off cls ::gestion dossier @set chemindossier=D:\log##%computername%\ @set doctxt=scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt :: gestion activation Windows @set cles=XXXXX-XXXX-XXXXX-XXXXX-XXXX ::gestion suppression Utilisateur @set utilisasupp=Utilisateur @set dossiersupp=C:\Users\%utilisasupp%\ ::clés de registre set autoadminlogon=1 set defaultdomainname=hjg set defaultusername=tes set defaultpassword=qsd if not exist %chemindossier% ( @set message1=Le dossier %chemindossier% n'a pas ete cree. Les fichiers logs ne seront pas disponible. echo. @call :creationdossier ) cls echo. > %chemindossier%%doctxt% ( echo Date de creation: %DATE% echo. echo Heure creation: %time:~0,8% echo. echo Nom utilisateur: %USERNAME% echo. echo Nom ordinateur: %COMPUTERNAME% echo. echo. echo. echo. echo. echo. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- echo. FICHIER LOG echo. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- echo. echo. echo. echo. echo ************************************ activation windows ************************************************* echo. echo. ) >> %chemindossier%%doctxt% cscript //B "C:\Windows\system32\slmgr.vbs" /ipk %cles% ( echo ERREUR RENVOYE IPK : %ERRORLEVEL% echo. ) >> %chemindossier%%doctxt% set message1=IPK reussit. Activation de Windows set message2=Echec de l'IPK. L'activation de Windows ne s'est pas faite call :test cscript //B "%windir%\system32\slmgr.vbs" /ato ( echo ERREUR RENVOYE ATO: %ERRORLEVEL% echo. ) >> %chemindossier%%doctxt% set message1=ATO reussit. Activation de Windows set message2=Echec de l'ATO. L'activation de Windows ne s'est pas faite call :test ( echo. echo. echo. echo.************************************* gestion utilisateur ************************************************ echo. echo. ) >> %chemindossier%%doctxt% net user Administrateur /active:yes set message1=Le compte Administrateur Local est bien active set message2=Le compte Administrateur Local n'est pas active call :test net user Utilisateur IF %ERRORLEVEL% NEQ 0 ( echo Le Compte "%utilisasupp%" n'existe pas ou a deja ete supprime echo. ) >> %chemindossier%%doctxt% IF %ERRORLEVEL% EQU 0 ( net user %utilisasupp% /delete set message1=Le Compte "%utilisasupp%" a bien ete supprime set message2=Le Compte "%utilisasupp%" n'a pas ete supprime call :test ) IF not exist %dossiersupp% ( echo Le dossier %dossiersupp% n'existe pas ou a deja ete supprime echo. ) >> %chemindossier%%doctxt% IF exist %dossiersupp% ( rmdir "C:\Users\Utilisateur" /s /q set message1=Le dossier %dossiersupp% n'a pas ete supprime set message2=Le dossier %dossiersupp% a bien ete supprime call :verifsupp ) ( echo. echo. echo. @echo ***************************************** gestion de l'autologin ***************************************** echo. echo. ) >> %chemindossier%%doctxt% for /f "tokens=3*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon') do ( if /i "%autoadminlogon%" EQU "%%a" ( echo La valeur de la cles de registre AutoAdminLogon est deja de : %%a echo. ) >> %chemindossier%%doctxt% if /i "%autoadminlogon%" NEQ "%%a" ( echo Continuation par l'appel de fonction qui gère la modification / test des clés de registre. echo. ) >> %chemindossier%%doctxt% ) exit :creationdossier ::création du dossier par la commande MD avec pour chemin la variable %chemindossier% (qui est au début du script) md %chemindossier% ::Si il y'a une erreur (donc que ERRORLEVEL est différent de 0) alors il crée un log sur le bureau de l'utilisateur qui execute le script et lui indique que le dossier n'a pas été crée et que le script va continuer à s'executer mais il n'y aura pas de log if not exist %chemindossier% ( echo %message1% echo. ) > C:\Users\%USERNAME%\Desktop\log.txt :: On réinitialise la variable %message1% car on la réutilise plus tard dans le script set message1=* :: Retourne à l'appel de la fonction pour la continuation du script goto:eof :test if %ERRORLEVEL% EQU 0 ( echo %message1% echo. ) >> %chemindossier%%doctxt% if %ERRORLEVEL% NEQ 0 ( echo %message2% echo. ) >> %chemindossier%%doctxt% set message1=* set message2=* goto:eof :verifsupp IF exist %dossiersupp% ( echo %message1% echo. ) >> %chemindossier%%doctxt% IF not exist %dossiersupp% ( echo %message2% echo. ) >> %chemindossier%%doctxt% set message1=* set message2=* goto:eof
j'aurai besoin de votre aide pour simplifié et surtout faire fonctionner cette boucle. J'ai plus d'idée sur comment modifié le code pour pouvoir le faire fonctionner. J'ai essayé pas mal de chose mais aucune ne fonctionne 8O8O.
Je vous l'accorde, cette partie du code est un peu plus complexe mais j'en ai besoin pour que le script soit utile (pour vérifié si la clés du registre est déja à la valeur souhaité puis si ce n'est pas le , faire la modification et vérifié ensuite si la clés de registre est la bonne et faire un log en fonction).
Le but était de récupérer dans un premier temps, la clés du registre d'origine (avec la boucle for ) puis de faire le test avec la variable correspondante afin de savoir si il la variable a déjà la valeur souhaitée.
Si ce n'est pas le cas, alors je la modifie, je re récupère la valeur de la clés puis je compare avec la variable (encore une fois => c'est pourquoi j'ai essayé de faire une fonction qui a pour but la récup de la clés) avec la clés souhaité. Si elle est différente => Echec en log sinon => Réussite.
Code:
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 @echo ***************************************** gestion de l'autologin ***************************************** >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" set autoadminlogon=1 set defaultdomainname=hjg set defaultusername=tes set defaultpassword=qsd for /f "tokens=3*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon') do ( if /i "%autoadminlogon%" EQU "%%a" ( @echo La valeur de la cles de registre AutoAdminLogon est deja de : %%a >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt") if /i "%autoadminlogon%" NEQ "%%a" ( REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d "%autoadminlogon%" /f for /f "tokens=3*" %%b in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon') do ( if /i "%autoadminlogon%" EQU "%%b" ( @echo La valeur: AutoAdminLogon bien modifiee. La valeur de AutoAdminLogon est de: %%b >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt") if /i "%autoadminlogon%" NEQ "%%b" ( @echo Erreur lors de la modification de la valeur: AutoAdminLogon. La valeur de AutoAdminLogon est: %%b >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" )) )) for /f "tokens=3*" %%c in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName') do ( if /i "%defaultdomainname%" EQU "%%c" ( @echo La valeur de la cles de registre DefaultDomainName est deja : %%c >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt") if /i "%defaultdomainname%" NEQ "%%c" ( REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName /t REG_SZ /d "%defaultdomainname%" /f for /f "tokens=3*" %%d in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName') do ( if /i "%defaultdomainname%" EQU "%%d" ( @echo La valeur: DefaultDomainName bien modifiee. La valeur de DefaultDomainName est: %%d >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" ) if /i "%defaultdomainname%" NEQ "%%d" ( @echo Erreur lors de la modification de la valeur: DefaultDomainName. La valeur de DefaultDomainName est: %%d >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" )) )) for /f "tokens=3*" %%e in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName') do ( if /i "%defaultusername%" EQU "%%e" ( @echo La valeur de la cles de registre DefaultUserName est deja : %%e >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" ) if /i "%defaultusername%" NEQ "%%e" ( REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "%defaultusername%" /f for /f "tokens=3*" %%f in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName') do ( if /i "%defaultusername%" EQU "%%f" ( @echo La valeur: DefaultUserName bien modifiee. La valeur de DefaultUserName est: %%f >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" ) if /i "%defaultusername%" NEQ "%%f" ( @echo Erreur lors de la modification de la valeur: DefaultUserName . La valeur de DefaultUserName est: %%f >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" )) )) for /f "tokens=3*" %%g in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword') do ( if /i "%defaultpassword%" EQU "%%g" ( @echo La valeur de la cles de registre DefaultUserName est deja : %%g >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" ) if /i "%defaultpassword%" NEQ "%%g" ( REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d "%defaultpassword%" /f for /f "tokens=3*" %%h in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword') do ( if /i "%defaultpassword%" EQU "%%h" ( @echo La valeur: DefaultPassword bien modifiee. La valeur de DefaultPassword est: %%h >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" ) if /i "%defaultpassword%" NEQ "%%h" ( @echo Erreur lors de la modification de la valeur: DefaultPassword. La valeur de DefaultPassword est: %%h >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" )) @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" ))
J'ai essayé de le simplifié en faisant de la boucle FOR un fonction puis de l’appeler mais rien n'y fait, ça fonctionne toujours pas.
Le code avec une meilleure vision:
[code]Code:
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 @echo off cls set AutoAdminLogon=0 set chem="D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" for /f "tokens=3*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon') do ( if /i "%autoadminlogon%" EQU "%%a" ( ( @echo La valeur de la cles de registre AutoAdminLogon est deja de : %%a >> @echo. ) >> %chem% ) if /i "%autoadminlogon%" NEQ "%%a" ( REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d "%autoadminlogon%" /f for /f "tokens=3*" %%b in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon') do ( if /i "%autoadminlogon%" EQU "%%b" ( ( @echo La valeur: AutoAdminLogon bien modifiee. La valeur de AutoAdminLogon est de: %%b >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" ) >> chem ) if /i "%autoadminlogon%" NEQ "%%b" ( ( @echo Erreur lors de la modification de la valeur: AutoAdminLogon. La valeur de AutoAdminLogon est: %%b >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" ) ) ) ) ) pause
En faite, la boucle marche mais elle ne prend pas en compte les echos (donc ne fait pas de log).
Sinon, je vais aussi voir pour intégrer les %1 et %2 que tu m'avais dit et pour la récupération de la dernière ligne, je travail pour qu'il remplace les caractères spéciaux pour des "e" car sinon, ça m'est inutile
Pour la recup de la dernière ligne avec transformation du , en e :
AmicalementCode:
1
2
3
4
5 setlocal enabledelayedexpansion enableextensions for /f "delims=" %%a in (actif.txt) do (set $dlign="%%a") set $dlign=!$dlign:‚=e! echo DERNIERE LIGNE = !$dlign!
Bonjour,
J'ai toujours un problème sur la fin du code (en rouge) . Quand je demande d'afficher les variables qui contienne les valeurs du registre récupéré, dés que la valeur n'existe pas, il met une erreur ou rien et quand la valeur AutoAdminLogon est égale à "0", il me met pas "0" mais rien.
Le but en faite voici c'est quoi:
1ere étape: Récupération des 4 valeurs dans la base de registre
2éme étape: Comparaison des ces 4 valeurs avec les 4 variables que l'utilisateur modifie à sa guise (selon le autologon qu'il souhaite) afin de savoir si elle sont ou non identique:
=> Si elle sont identiques: Message: La valeurs %nomvaleur% est identique a celle souhaitée. La valeur est : %valeur%
=>Si elle est différentes: voir 3éme étape
3éme étape: La valeur est différente: la modifié avec la valeur de la variable (donc la valeur mit dans le code directement au préalable) puis vérifié son bon déroulement avec If %ERRORLEVEL% (retourne 1 ou 0)
=> Si y'a pas d'erreur : Aucune erreur. La valeur %Nomvaleur% est donc %valeur de la clés%
=> Si y'a erreur : Erreur lors de la modification de la valeur. La valeur %nomvaleur% est restée: %valeur de la clés)
j'avais déja travaillé dessus mais ça fonctionne plus et je ne sais pas pourquoi. J'ai essayé 6 manières différentes (avec ou sans boucle For) même topo.
Essais (celui-ci n'est pas optimisé et déjà montré ici):
Code:
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 @echo ***************************************** gestion de l'autologin ***************************************** >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" set autoadminlogon=1 set defaultdomainname=hjg set defaultusername=tes set defaultpassword=qsd ::recupération de la valeur for /f "tokens=3*" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon') do ( ::si la valeur est déja celle souhaitée alors => log if /i "%autoadminlogon%" EQU "%%a" ( @echo La valeur de la cles de registre AutoAdminLogon est deja de : %%a >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" ) ::sinon on fait un modification if /i "%autoadminlogon%" NEQ "%%a" ( ::c'est ici qu'on modifie la valeur de la clés REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d "%autoadminlogon%" /f ::on récupére la nouvelle valeur de la clés for /f "tokens=3*" %%b in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon') do ( ::on retest voir si la valeur est la bonne maintenant. Le log est en fonction du résultat. ::si la valeur est bien celle souhaité alors log comme quoi c'est bon if /i "%autoadminlogon%" EQU "%%b" ( @echo La valeur: AutoAdminLogon bien modifiee. La valeur de AutoAdminLogon est de: %%b >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" ) ::ici sinon, log comme quoi ça n'a pas été if /i "%autoadminlogon%" NEQ "%%b" ( @echo Erreur lors de la modification de la valeur: AutoAdminLogon. La valeur de AutoAdminLogon est: %%b >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" @echo. >> "D:\log##%computername%\scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt" ) ) ) )
Après j'ai d'autres version utilisant des fonctions comme la fonction récupération des clés de registre & une fonction modification clés + vérification valeur (mais j'ai un souci car il faut que je rappelle dans la deuxième la 1ere pour re recupérer les clés et donc vérifié si y'a eu une bonne modification => Vérification en plus du If ERRORLEVEL après le REG ADD)
Vous voulez celle avec les fonctions?
Code:
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278 echo off cls ::gestion dossier set chemindossier=D:\log##%computername%\ set doctxt=scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt :: gestion activation Windows set cles=XX-XXXX-XXXXX-XXXX-XXX ::gestion suppression Utilisateur set utilisasupp=Utilisateur set dossiersupp=C:\Users\%utilisasupp%\ ::clés de registre set autoadminlogon=1 set defaultdomainname=hjg set defaultusername=tes set defaultpassword=qsd if not exist %chemindossier% ( set message1=Le dossier %chemindossier% n'a pas ete cree. Les fichiers logs ne seront pas disponible. echo. call :creationdossier ) cls echo. > %chemindossier%%doctxt% ( echo Date de creation: %DATE% echo. echo Heure creation: %time:~0,8% echo. echo Nom utilisateur: %USERNAME% echo. echo Nom ordinateur: %COMPUTERNAME% echo. echo. echo. echo. echo. echo. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- echo. FICHIER LOG echo. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- echo. echo. echo. echo. echo ************************************ activation windows ************************************************* echo. echo. ) >> %chemindossier%%doctxt% cscript //B "C:\Windows\system32\slmgr.vbs" /ipk %cles% ( echo ERREUR RENVOYE IPK : %ERRORLEVEL% echo. ) >> %chemindossier%%doctxt% set message1=IPK reussit. Activation de Windows set message2=Echec de l'IPK. L'activation de Windows ne s'est pas faite call :testereussite cscript //B "%windir%\system32\slmgr.vbs" /ato ( echo ERREUR RENVOYE ATO: %ERRORLEVEL% echo. ) >> %chemindossier%%doctxt% set message1=ATO reussit. Activation de Windows set message2=Echec de l'ATO. L'activation de Windows ne s'est pas faite call :testereussite ( echo. echo. echo. echo.************************************* gestion utilisateur ************************************************ echo. echo. ) >> %chemindossier%%doctxt% net user Administrateur /active:yes set message1=Le compte Administrateur Local est bien active set message2=Le compte Administrateur Local n'est pas active call :testereussite net user Utilisateur IF %ERRORLEVEL% NEQ 0 ( echo Le Compte "%utilisasupp%" n'existe pas ou a deja ete supprime echo. ) >> %chemindossier%%doctxt% IF %ERRORLEVEL% EQU 0 ( net user %utilisasupp% /delete set message1=Le Compte "%utilisasupp%" a bien ete supprime set message2=Le Compte "%utilisasupp%" n'a pas ete supprime call :testereussite ) IF not exist %dossiersupp% ( echo Le dossier %dossiersupp% n'existe pas ou a deja ete supprime echo. ) >> %chemindossier%%doctxt% IF exist %dossiersupp% ( rmdir "C:\Users\Utilisateur" /s /q set message1=Le dossier %dossiersupp% n'a pas ete supprime set message2=Le dossier %dossiersupp% a bien ete supprime call :verifsupp ) ( echo. echo. echo. echo ***************************************** gestion de l'autologin ***************************************** echo. echo. ) >> %chemindossier%%doctxt% for /f "tokens=3" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" ^| find "AutoAdminLogon"') do set valeur1=%%i for /f "tokens=3" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" ^| find "DefaultDomainName"') do set valeur2=%%i for /f "tokens=3" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" ^| find "DefaultPassword"') do set valeur3=%%i for /f "tokens=3" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" ^| find "DefaultUserName"') do set valeur4=%%i ::Gestion de la clés AutoAdminLogon REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "AutoAdminLogon" if %errorlevel% NEQ 0 ( ( echo. echo La clés AutoAdminLogon n'existe pas echo. ) >> C:\Users\%USERNAME%\Desktop\testboucle.txt ) if %errorlevel% EQU 0 ( set vartest=%valeur1% echo Variable 1 : %vartest% >> %chemindossier%%doctxt% set message1=Erreur lors de la creation ou modification de la clés de registre set message2=La clés a bien ete modifiée. call :fonctionmodif ) for /f "tokens=3*" %%j in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon') do set var=%%j for /f "tokens=3*" %%j in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName') do set varb=%%j for /f "tokens=3*" %%j in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName') do set varc=%%j for /f "tokens=3*" %%j in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword') do set vard=%%j ( echo Valeur a : %vara% echo Valeur b : %varb% echo Valeur c : %varc% echo Valeur d : %vard% echo. ) >> %chemindossier%%doctxt% exit :creationdossier ::création du dossier par la commande MD avec pour chemin la variable %chemindossier% (qui est au début du script) md %chemindossier% ::Si il y'a une erreur (donc que ERRORLEVEL est différent de 0) alors il crée un log sur le bureau de l'utilisateur qui execute le script et lui indique que le dossier n'a pas été crée et que le script va continuer à s'executer mais il n'y aura pas de log if not exist %chemindossier% ( echo %message1% echo. ) > C:\Users\%USERNAME%\Desktop\log.txt :: On réinitialise la variable %message1% car on la réutilise plus tard dans le script set message1=* :: Retourne à l'appel de la fonction pour la continuation du script goto:eof :testereussite if %ERRORLEVEL% EQU 0 ( echo %message1% echo. ) >> %chemindossier%%doctxt% if %ERRORLEVEL% NEQ 0 ( echo %message2% echo. ) >> %chemindossier%%doctxt% set message1=* set message2=* goto:eof :verifsupp IF exist %dossiersupp% ( echo %message1% echo. ) >> %chemindossier%%doctxt% IF not exist %dossiersupp% ( echo %message2% echo. ) >> %chemindossier%%doctxt% set message1=* set message2=* goto:eof
Voici le code qui fonctionne très bien (donc sans la partie Gestion des logs)
Code:
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239 echo off cls ::gestion dossier set chemindossier=D:\log##%computername%\ set doctxt=scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt :: gestion activation Windows set cles=XX-XXXX-XXXXX-XXXX-XXX ::gestion suppression Utilisateur set utilisasupp=Utilisateur set dossiersupp=C:\Users\%utilisasupp%\ ::clés de registre set autoadminlogon=1 set defaultdomainname=hjg set defaultusername=tes set defaultpassword=qsd if not exist %chemindossier% ( set message1=Le dossier %chemindossier% n'a pas ete cree. Les fichiers logs ne seront pas disponible. echo. call :creationdossier ) cls echo. > %chemindossier%%doctxt% ( echo Date de creation: %DATE% echo. echo Heure creation: %time:~0,8% echo. echo Nom utilisateur: %USERNAME% echo. echo Nom ordinateur: %COMPUTERNAME% echo. echo. echo. echo. echo. echo. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- echo. FICHIER LOG echo. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- echo. echo. echo. echo. echo ************************************ activation windows ************************************************* echo. echo. ) >> %chemindossier%%doctxt% cscript //B "C:\Windows\system32\slmgr.vbs" /ipk %cles% ( echo ERREUR RENVOYE IPK : %ERRORLEVEL% echo. ) >> %chemindossier%%doctxt% set message1=IPK reussit. Activation de Windows set message2=Echec de l'IPK. L'activation de Windows ne s'est pas faite call :testereussite cscript //B "%windir%\system32\slmgr.vbs" /ato ( echo ERREUR RENVOYE ATO: %ERRORLEVEL% echo. ) >> %chemindossier%%doctxt% set message1=ATO reussit. Activation de Windows set message2=Echec de l'ATO. L'activation de Windows ne s'est pas faite call :testereussite ( echo. echo. echo. echo.************************************* gestion utilisateur ************************************************ echo. echo. ) >> %chemindossier%%doctxt% net user Administrateur /active:yes set message1=Le compte Administrateur Local est bien active set message2=Le compte Administrateur Local n'est pas active call :testereussite net user Utilisateur IF %ERRORLEVEL% NEQ 0 ( echo Le Compte "%utilisasupp%" n'existe pas ou a deja ete supprime echo. ) >> %chemindossier%%doctxt% IF %ERRORLEVEL% EQU 0 ( net user %utilisasupp% /delete set message1=Le Compte "%utilisasupp%" a bien ete supprime set message2=Le Compte "%utilisasupp%" n'a pas ete supprime call :testereussite ) IF not exist %dossiersupp% ( echo Le dossier %dossiersupp% n'existe pas ou a deja ete supprime echo. ) >> %chemindossier%%doctxt% IF exist %dossiersupp% ( rmdir "C:\Users\Utilisateur" /s /q set message1=Le dossier %dossiersupp% n'a pas ete supprime set message2=Le dossier %dossiersupp% a bien ete supprime call :verifsupp ) ( echo. echo. echo. echo ***************************************** gestion de l'autologin ***************************************** echo. echo. ) >> %chemindossier%%doctxt% ::recupération des valeurs du registre et misent dans une variable. exit :creationdossier ::création du dossier par la commande MD avec pour chemin la variable %chemindossier% (qui est au début du script) md %chemindossier% ::Si il y'a une erreur (donc que ERRORLEVEL est différent de 0) alors il crée un log sur le bureau de l'utilisateur qui execute le script et lui indique que le dossier n'a pas été crée et que le script va continuer à s'executer mais il n'y aura pas de log if not exist %chemindossier% ( echo %message1% echo. ) > C:\Users\%USERNAME%\Desktop\log.txt :: On réinitialise la variable %message1% car on la réutilise plus tard dans le script set message1=* :: Retourne à l'appel de la fonction pour la continuation du script goto:eof :testereussite if %ERRORLEVEL% EQU 0 ( echo %message1% echo. ) >> %chemindossier%%doctxt% if %ERRORLEVEL% NEQ 0 ( echo %message2% echo. ) >> %chemindossier%%doctxt% set message1=* set message2=* goto:eof :verifsupp IF exist %dossiersupp% ( echo %message1% echo. ) >> %chemindossier%%doctxt% IF not exist %dossiersupp% ( echo %message2% echo. ) >> %chemindossier%%doctxt% set message1=* set message2=* goto:eof
Bonjour,
Merci déja pour ton aide et je voulais savoir si il y avait un limite d'appel de fonction dans le batch.
Ce que j'appelle fonction, c'est " :fonction " , la série d'instruction que tu veux faire puis faire un " call :fonction ".
Toujours pour le même code, voici ce que j'avais penser comme fonction mais ça marche pas :s .
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 ::Affiche les clés récupérer. Cette fonction, je l'utilise uniquement pendant les tests :affichagecles ::Affichage des 4 valeurs récupéré afin d'être sur de la bonne récupération des valeurs & qu'elles ont bien été misent dans une variable. ( echo Valeur a : %vara% echo Valeur b : %varb% echo Valeur c : %varc% echo Valeur d : %vard% echo. ) >> %chemindossier%%doctxt% goto:eof
Celui-ci qui ne fonctionne pas non plus. J'ai essayé deux versions:
*La 1ere, le ADD REG est dans le code (je l'ai mis en rouge et la fonction aussi)
Code:
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138 echo off cls ::gestion chemin des logs set chemindossier=D:\log##%computername%\ set doctxt=scriptserv_%computername%##%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%.txt ::clés de registre set autoadminlogon=0 set defaultdomainname=hjg7 set defaultusername=tes5 set defaultpassword=qsd4 if not exist %chemindossier% ( set message1=Le dossier %chemindossier% n'a pas ete cree. Les fichiers logs ne seront pas disponible. echo. call :creationdossier ) ::entête de la catégorie traitée ( echo. echo. echo. echo ***************************************** gestion de l'autologin ***************************************** echo. echo. ) >> %chemindossier%%doctxt% call :recupcles call :affichagecles ::verification de la clés de registre AutoAdminLogon if "%vara%" EQU "%autoadminlogon%" ( ( echo La valeur de la clés AutoAdminLogon est identique à la valeur que souhaitée. La valeur est %vara% echo. ) >> %chemindossier%%doctxt% ) if "%vara%" NEQ "%autoadminlogon%" ( REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d "%autoadminlogon%" /f call :test call :recupcles call :affichagecles ) ::fonction qui gère la création du dososier oû sont les deux fichiers logs :creationdossier ::création du dossier par la commande MD avec pour chemin la variable %chemindossier% (qui est au début du script) md %chemindossier% ::Si il y'a une erreur (donc que ERRORLEVEL est différent de 0) alors il crée un log sur le bureau de l'utilisateur qui execute le script et lui indique que le dossier n'a pas été crée et que le script va continuer à s'executer mais il n'y aura pas de log if not exist %chemindossier% ( echo %message1% echo. ) > C:\Users\%USERNAME%\Desktop\log.txt :: On réinitialise la variable %message1% car on la réutilise plus tard dans le script set message1=* :: Retourne à l'appel de la fonction pour la continuation du script goto:eof ::fonction récupération des clés de registre et les mettres dans une variable :recupcles ::boucle pour récupérer la valeur de chaque clés de registre for /f "tokens=3" %%j in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon') do set vara=%%j for /f "tokens=3" %%j in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName') do set varb=%%j for /f "tokens=3" %%j in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName') do set varc=%%j for /f "tokens=3" %%j in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword') do set vard=%%j goto:eof :affichagecles ::Affichage des 4 valeurs récupéré afin d'être sur de la bonne récupération des valeurs & qu'elles ont bien été misent dans une variable. ( echo Valeur a : %vara% echo Valeur b : %varb% echo Valeur c : %varc% echo Valeur d : %vard% echo. ) >> %chemindossier%%doctxt% goto:eof :test if "%vara%" EQU "%autoadminlogon%" ( ( echo La modification est reussite echo ) >> %chemindossier%%doctxt% ) if "%vara%" NEQ "%autoadminlogon%" ( ( echo La modification est un echec. >> %chemindossier%%doctxt% echo ) >> %chemindossier%%doctxt% ) goto:eof
Et une autre avec le même code au dessus sauf que le REG ADD est dans la fonction (donc pas la peine de mettre l'ERRORLEVEL dans un variable)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 ::test si la modification des clés par Reg ADD à été correctement effectué. REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d "%autoadminlogon%" /f :test if "%vara%" EQU "%autoadminlogon%" ( ( echo La modification est reussite echo ) >> %chemindossier%%doctxt% ) if "%vara%" NEQ "%autoadminlogon%" ( ( echo La modification est un echec. >> %chemindossier%%doctxt% echo ) >> %chemindossier%%doctxt% ) goto:eof
Et si tu fait :Citation:
::Affiche les clés récupérer. Cette fonction, je l'utilise uniquement pendant les tests
:affichagecles
::Affichage des 4 valeurs récupéré afin d'être sur de la bonne récupération des valeurs & qu'elles ont bien été misent dans une variable.
(
echo Valeur a : %vara%
echo Valeur b : %varb%
echo Valeur c : %varc%
echo Valeur d : %vard%
echo.
) >> %chemindossier%%doctxt%
goto:eof
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 CALL :affichagecles %vara% %varb% %varc% %vard% :affichagecles ::Affichage des 4 valeurs récupéré afin d'être sur de la bonne récupération des valeurs & qu'elles ont bien été misent dans une variable. ( echo Valeur a : %1 echo Valeur b : %2 echo Valeur c : %3 echo Valeur d : %4 echo. ) >> %chemindossier%%doctxt% goto:eof
Bonjour à tous !
Merci pour votre aide :) . J'ai finalement fait au plus simple niveau log.
Juste pour ma connaissance personnel, y'a t'il un moyen en batch de planqué la fenêtre CMD (la réduire ou la planqué complétement) ?
Bonjour !
Je voulais aussi savoir si il y avait un moyen de renommé le processus par ce que l'on veut (par exemple actuellement quand je lance le script script.bat et appel.bat , dans la liste des processus, leurs noms est cmd.exe or j'aimerai qu'il s'appelle script.bat et appel.bat dans cette liste de processus)
Le but est de différencier les deux scripts pour tester si oui ou non ils sont actifs dans les processus (donc égale ou non à 0 en mémoire utiliser)