Demande d'aide sur le script batch
Bonjour à la communauté,
J'ai un souci de taille en Bash que je ne sais pas régler par moi même (malgré les multiples essais )
Citation:
@echo off
cls
if not exist C:\log\ (
md D:\log\
)
@echo ------------------------------------------------Appel du batch------------------------------------------------ > D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. ***************************creation de l emplacement reseau*************************** >> D:\log\appel.log
@echo. >> D:\log\appel.log
net use T: \\Nom ordi\scriptexecute MDP /user:utilisateur@domaine.extension
@echo creation de l'emplacement reseau traite >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. ***************************appel du fichier test.bat*************************** >> D:\log\appel.log
@echo. >> D:\log\appel.log
start T:\script.bat
@echo appel du fichier test.bat prit en compte >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
timeout 40
@echo. *******************************supression emplacement reseau******************************* >> D:\log\appel.log
@echo. >> D:\log\appel.log
net use * /delete /yes
@echo supression emplacemement reseau traite >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. *******************************Supression des traces******************************* >> D:\log\appel.log
rmdir C:\sources\ /s /q
@echo suppression du dossier sourDe traite >> D:\log\appel.log
Je suis au courant que certaines choses ne sont pas propre (comme le timer 40 s) mais je n'ai pas envie de me prendre la tête avec les processus.
1ere question : Comment se fait t'il qu'il trouve forcement le dossier scriptexecute (placé sur le PC dans U: alors que D : est aussi partagé) sans qu'on est à lui dire (T: \\Nom ordi\U:\scriptexecute ) que le dossier se trouve dans le U: ?
2éme question : Comment je peux améliorer le script pour que l'appel devienne dynamique (le script appel.bat est en dur dans le master WDS et donc non modifiable / peu maniable) et que si on rajoute un script?
Je m'explique, si l'on souhaite changé le dossier de stockage des scripts sur le serveur WDS, alors que le script d'appel prenne en compte le nouveau dossier & que si on rajoute des scripts dans ce dossier alors que l'ensemble des scripts présent dans le dossier soit exécuté.
j'ai essayé de lister avec dir les script *.bash du dossier scriptexecute puis de mettre le résultat dans des variables pour ensuite les utilisés pour lancer les scripts mais je n'y arrive pas ainsi.
Actuellement je travail sur la forme
Citation:
for %%f in (T:\*.bat) do call :process %%f
goto :eof
:process
SET fichier=%f%
start %fichier%
:eof
Message à 17H13
Voila ce que je fais en comme modification en ce moment même (le If & la double arrête le script => les logs le montre)
Citation:
@echo off
cls
if not exist C:\log\ (
md D:\log\
)
@echo ------------------------------------------------Appel du batch------------------------------------------------ > D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo *******************************creation de l emplacement reseau******************************* >> D:\log\appel.log
@echo. >> D:\log\appel.log
@net use T: \\nomordi\nomdossier mdp /user:user@domaine.extension
@echo creation de l'emplacement reseau traite >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo *******************************Mappage batch(s) dans l'emplacement reseau******************************* >> D:\log\appel.log
@echo. >> D:\log\appel.log
@set /a nbFichiers=0
@for %%a in (T:\*.bat) do set /a nbfichiers+=1
@echo Calcule du nombre de fichier(s) Batch: %nbfichiers% >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo *******************************appel du fichier test.bat******************************* >> D:\log\appel.log
@echo. >> D:\log\appel.log
Set compteur=0
:newtest
if %compteur% LEQ %nbfichiers% do(
for %%f in (T:\*.bat) do call :process %%f
:process
SET fichier=%1%
echo %fichier% > C:\Users\Administrateur\desktop\rapport.txt
goto newtest)
@start T:\script.bat
@echo appel du fichier test.bat prit en compte >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@timeout 40
@echo *******************************supression emplacement reseau******************************* >> D:\log\appel.log
@echo. >> D:\log\appel.log
@net use * /delete /yes
@echo supression emplacemement reseau traite >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo *******************************Suppression des traces******************************* >> D:\log\appel.log
@echo. >> D:\log\appel.log
@rmdir C:\sources\ /s /q
@echo suppression du dossier source traite >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
Plus facile sous linux tout ça :=)
Merci d'avance pour votre Aide
Louispeperman
modifié autologon WINDOWS7,executer script sur serveur,activation compte superadministrateur, supprimédossier
c'est bon c'est résolu, vous pouvez bloquer le message (pour éviter qu'on le remonte un an après :mouarf::mouarf:).
Merci à tous les protagonistes qui ont répondu aux différents messages
voila les dernier code qui marche. J'espère que cela pourra servir d'exemple à d'autres si besoin
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
|
@echo off
cls
if not exist C:\log\ (
md D:\log\
)
@echo ------------------------------------------------Appel du batch------------------------------------------------ > D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo *******************************creation de l emplacement reseau******************************* >> D:\log\appel.log
@echo. >> D:\log\appel.log
@net use T: \\nomordinateur\nomdossier motdepasse /user:utilisateur@domaine.extension
@echo creation de l'emplacement reseau traite >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo *******************************Mappage batch(s) dans l'emplacement reseau T: ******************************* >> D:\log\appel.log
@echo. >> D:\log\appel.log
@set /a nbFichiers=0
@for %%a in (T:\*.bat) do set /a nbfichiers+=1
@echo Calcule du nombre de fichier(s) Batch: %nbfichiers% >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo *******************************appel de l'ensemble des fichiers batch (dans le dossier partage) sur le serveur******************************* >> D:\log\appel.log
@echo. >> D:\log\appel.log
:newtest
for %%f in (T:\*.bat) do (echo Fichier en traitement : %%f
call :process %%f)
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@timeout 40
@echo *******************************supression emplacement reseau (attention supprime tout les emplacements réseaux crée)******************************* >> D:\log\appel.log
@echo. >> D:\log\appel.log
@net use * /delete /yes
@echo supression emplacemement reseau traite >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo *******************************Suppression des traces (le script appel était dans le dossier " C:\sources" sur le pc client)******************************* >> D:\log\appel.log
@echo. >> D:\log\appel.log
@rmdir C:\sources\ /s /q
@echo suppression du dossier source traite >> D:\log\appel.log
@echo. >> D:\log\appel.log
@echo. >> D:\log\appel.log
goto end
:process
start %1
@echo appel du fichier %1.bat prit en compte >> D:\log\appel.log
:end |
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
|
@echo off
cls
if not exist D:\log\ (
md D:\log\
)
@echo -------------------------------------------Fichier Log-------------------------------------------------- > D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
@echo *********activation windows********* >> D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
cscript //B "%windir%\system32\slmgr.vbs" /ipk xxxx-xxxx-xxxx-xxxxx-xxxxx
@echo IPK traite >> D:\log\scriptb.txt
cscript //B "%windir%\system32\slmgr.vbs" /ato
@echo ato traite >> D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
@echo *********gestion utilisateur********* >> D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
net user Administrateur /active:yes
@echo gestion Administrateur traitee >> D:\log\scriptb.txt
net user Utilisateur /delete
@echo gestion utilisateur traitee >> D:\log\scriptb.txt
@rmdir C:\Users\Utilisateur /s /q
@echo suppression dossier utilisateur traitee >> D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
@echo *********gestion de l'autologin********* >> D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
@echo. >> D:\log\scriptb.txt
REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 1 /f
@echo cles registre AutoAdminLogon traitee >> D:\log\scriptb.txt
REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName /t REG_SZ /d ADM /f
@echo cles registre DefaultDomainName traitee >> D:\log\scriptb.txt
REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d Molinel /f
@echo cles registre DefaultUserName traitee >> D:\log\scriptb.txt
REG add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d Molinel2013 /f
@echo cles registre DefaultPassword traitee >> D:\log\scriptb.txt
exit |