Problème avec reg find [BATCH] - Shell/Batch - Programmation
MarshPosté le 08-03-2004 à 16:21:35
Bonjour tt le monde,
J'ai créé un batch pour le boulot pour permettre de chercher les profils fantôme sur toutes les machines du réseau: çà crée parfois des soucis poru l'ouverture de session. Mon batch fait dans un 1er temps un net view pour récupérer la liste des machines connectées, puis connecte c$, va voir si le profil XXXX existe, et le cas échéant l'efface. Le problème que je rencontre est la présence de clés dans la base de registre m'empêchant de totalement effacer le repertoire: certaines clés pointent dessus. Il faut donc que je scanne la BDR en ligne de commande, puis que j'efface les clés qui posent problème. Mais j'ai bcp de mal à utiliser la commande reg find, alors si qq'un pourrait me donner un coup de main çà serait pas de refus...
Je vous mets le code source de mon batch principal:
Citation :
@echo off rem ***************************************** rem * Fait par ############################ * rem *****************************************
title [Recherche d'un profil sur les postes du #####]
Rem Rem Test des arguments Rem
if MASC%1==MASC goto USAGE
Rem Rem Déclaration du fichier par défaut Rem
set CHEMIN=c:\outils\svp\test\ set FICHIER=%CHEMIN%listing.txt
Rem Rem Récupération de la liste des machines connectées Rem
@echo off Rem ************************************* Rem Fait par ########################## * Rem *************************************
Rem Rem Test des arguments Rem
if MASC%2==MASC goto USAGE
Rem Rem Initialisation des variables globales Rem
set MACHINE=%1% set UNITE=y: set LOGIN=######## set PASSWD=######## set PROFILE=%2% set CHEMIN=%UNITE%\winnt\profiles\ set DOMAINE=######
Rem Rem Connexion du lecteur réseau Rem
if exist %UNITE%\nul net use %UNITE% /delete 1>nul net use %UNITE% \\%MACHINE%\c$ %PASSWD% /USER:%DOMAINE%\%LOGIN% 1>nul if errorlevel 2 goto FIN
Rem Rem Vérification de la présence du profil Rem
if exist %CHEMIN%%PROFILE% goto BON goto PASBON
Rem Rem Profil présent sur le poste Rem
:BON echo -------------------------------------------------------- echo Le profil "%PROFILE%" est present sur le poste %MACHINE% echo -------------------------------------------------------- rmdir /s /q %CHEMIN%%PROFILE% echo ------------- echo Profil efface echo ------------- if exist %UNITE%\nul net use %UNITE% /delete 1>nul goto FIN
Rem Rem Profil absent du poste Rem
ASBON echo -------------------------------------------------------------- echo Le profil "%PROFILE%" n'est pas present sur le poste %MACHINE% echo -------------------------------------------------------------- if exist %UNITE%\nul net use %UNITE% /delete 1>nul goto FIN
Rem Rem Usage Rem
:USAGE echo. echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» echo º Syntaxe de la commande: º echo º %0% PosteNT CompteNT º echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ echo. goto FIN
:FIN
Voilà, j'espère que j'ai été complet dans mon explication du problème, et que mon post n'est pas trop long. S'il faut que j'enlève le code dites-le moi et j'édite mon message. Merci d'avance pour votre aide.
Marsh Posté le 08-03-2004 à 16:21:35
Bonjour tt le monde,
J'ai créé un batch pour le boulot pour permettre de chercher les profils fantôme sur toutes les machines du réseau: çà crée parfois des soucis poru l'ouverture de session.
Mon batch fait dans un 1er temps un net view pour récupérer la liste des machines connectées, puis connecte c$, va voir si le profil XXXX existe, et le cas échéant l'efface.
Le problème que je rencontre est la présence de clés dans la base de registre m'empêchant de totalement effacer le repertoire: certaines clés pointent dessus.
Il faut donc que je scanne la BDR en ligne de commande, puis que j'efface les clés qui posent problème.
Mais j'ai bcp de mal à utiliser la commande reg find, alors si qq'un pourrait me donner un coup de main çà serait pas de refus...
Je vous mets le code source de mon batch principal:
@echo off
rem *****************************************
rem * Fait par ############################ *
rem *****************************************
title [Recherche d'un profil sur les postes du #####]
Rem
Rem Test des arguments
Rem
if MASC%1==MASC goto USAGE
Rem
Rem Déclaration du fichier par défaut
Rem
set CHEMIN=c:\outils\svp\test\
set FICHIER=%CHEMIN%listing.txt
Rem
Rem Récupération de la liste des machines connectées
Rem
net view | sort | find "\\" | cut -c 3-15 > %FICHIER%
Rem
Rem Initialisation des variables globales
Rem
set PROFIL=%1%
set SCRIPT=machine.bat
Rem
Rem Boucle for pour scanner le fichier
Rem
FOR /F "eol=; tokens=1" %%a IN (%FICHIER%) do %CHEMIN%%SCRIPT% %%a %PROFIL%
goto FIN
Rem
Rem Partie Usage
Rem
:USAGE
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Usage : %0% CompteNT º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
goto FIN
et voici le code du 2ième batch:
@echo off
Rem *************************************
Rem Fait par ########################## *
Rem *************************************
Rem
Rem Test des arguments
Rem
if MASC%2==MASC goto USAGE
Rem
Rem Initialisation des variables globales
Rem
set MACHINE=%1%
set UNITE=y:
set LOGIN=########
set PASSWD=########
set PROFILE=%2%
set CHEMIN=%UNITE%\winnt\profiles\
set DOMAINE=######
Rem
Rem Connexion du lecteur réseau
Rem
if exist %UNITE%\nul net use %UNITE% /delete 1>nul
net use %UNITE% \\%MACHINE%\c$ %PASSWD% /USER:%DOMAINE%\%LOGIN% 1>nul
if errorlevel 2 goto FIN
Rem
Rem Vérification de la présence du profil
Rem
if exist %CHEMIN%%PROFILE% goto BON
goto PASBON
Rem
Rem Profil présent sur le poste
Rem
:BON
echo --------------------------------------------------------
echo Le profil "%PROFILE%" est present sur le poste %MACHINE%
echo --------------------------------------------------------
rmdir /s /q %CHEMIN%%PROFILE%
echo -------------
echo Profil efface
echo -------------
if exist %UNITE%\nul net use %UNITE% /delete 1>nul
goto FIN
Rem
Rem Profil absent du poste
Rem
ASBON
echo --------------------------------------------------------------
echo Le profil "%PROFILE%" n'est pas present sur le poste %MACHINE%
echo --------------------------------------------------------------
if exist %UNITE%\nul net use %UNITE% /delete 1>nul
goto FIN
Rem
Rem Usage
Rem
:USAGE
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Syntaxe de la commande: º
echo º %0% PosteNT CompteNT º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
goto FIN
:FIN
Voilà, j'espère que j'ai été complet dans mon explication du problème, et que mon post n'est pas trop long. S'il faut que j'enlève le code dites-le moi et j'édite mon message.
Merci d'avance pour votre aide.
Matthieu