pago159
Goto Top

Ordner mit Teilnamen finden und kompletten Pfad ausgeben

Hallo Kollegen,
ich habe mal wieder ein kleines Batch Problem.
Ich suche auf mehreren Geräten nach Benutzerordnern z.B. "XY*" nach meiner Ausgabe sagt er mit, dass er den Ordner "XY*" gefunden hat, allerdings bräuchte ich den kompletten Namen (XYZ und XYD) des Ordners. Wie müsste ich da mein Skript abändern?

Auf dem Client sind z.B. folgende User:

XYZ
XYD
FZD
DZO


@echo off &setlocal
title Suchen von Benutzeprofilen auf TS-Servern
set Version=Version...: 1.0
set Stand= 24.02.2015
:delete
cls

ECHO ---------------------------------------------------------------------------
ECHO Funktion..: Suchen von Benutzerprofilen auf Clients 
ECHO.
ECHO Entwicklungsstand: .....:  - %Stand% 
ECHO %Version%
ECHO ---------------------------------------------------------------------------



set LogDir=C:\Logs
if not exist %LogDir%\. md %LogDir%

set ServerList=%LogDir%\TS_Server.txt

set LogFile=%LogDir%\TsProfilSuche.log
set ShowLog=%LogDir%\ShowTsProfile.log



set /p lck="      Bitte geben Sie die zu suchende Benutzerkennung an:"   


ECHO -------------------------------------------------------------                                                                                    > %ShowLog%
ECHO  Suchen des Benutzerprofils auf Clients            		                                                                       >> %ShowLog%
ECHO  Benutzerprofil %lck% wird auf allen Clients gesucht                                                                         >> %ShowLog%
ECHO -------------------------------------------------------------                                                                                     >> %ShowLog%

ECHO %DATE% %TIME% Script-Version: %Version%   Stand: %Stand%                                                   >> %ShowLog%
ECHO %DATE% %TIME% Aktion wurde gestartet von: %USERDOMAIN%\%USERNAME%                     >> %ShowLog%
ECHO %DATE% %TIME% Beginn Search Profile                                                                                       >> %ShowLog%
ECHO %DATE% %TIME% Beginn Search Profile
ECHO									                                                                                       >> %ShowLog%


for /F %%i in (%ServerList%) do call :doSearchProfile %%i
                     

ECHO %DATE% %TIME% Fertig mit Search Profile!
ECHO %DATE% %TIME% Fertig mit Search Profile!                                                                           >> %ShowLog%
ECHO -------------------------------------------------------------                                                                                    >> %ShowLog%
ECHO  Suchen des Benutzerprofils auf Clients abgeschlossen         	                                                >> %ShowLog%
ECHO  Benutzerprofil %lck% wurde auf allen Clients gesucht                                                               >> %ShowLog%
ECHO -------------------------------------------------------------                                                                                    >> %ShowLog%

type %ShowLog% >> %LogFile%

%Showlog%

set /p Anhalt=Enter zum beenden; j um eine weitere Datei zu suchen?
if /I %Anhalt%==j goto :delete 
exit

goto :EOF


:doSearchProfile
REM -------------------------------------------------------------
REM  Profilordner auf angegebenen Servern suchen
REM -------------------------------------------------------------


echo Das Profil %lck% wird auf dem Client %1 gesucht
if exist \\%1\C$\Users\%lck% 2>&1 echo Ja, das Profil \\%1\C:\Users\%lck% existiert! >>%ShowLog% 2>&1
if not exist \\%1\C$\Users\%lck% 2>&1 echo NEIN, das Profil \\%1\C:\Users\%lck% ist nicht vorhanden! >>NUL
   
goto end
 	

:end





endlocal

vielen dank schon mal für eure Hilfe am Freitag.

Content-ID: 265434

Url: https://administrator.de/contentid/265434

Ausgedruckt am: 24.11.2024 um 13:11 Uhr

bastla
Lösung bastla 06.03.2015, aktualisiert am 11.03.2015 um 09:04:36 Uhr
Goto Top
Hallo Pago159!

Versuch es so anstelle der Zeile 70 (ungetestet):
if exist \\%1\C$\Users\%lck% (
    echo Ja, Profil(e) für \\%1\C:\Users\%lck% vorhanden:
    dir /b \\%1\C$\Users\%lck%
)>>%ShowLog%
Wozu übrigens die Umleitung nach ">>NUL" in Zeile 71?

Grüße
bastla
Pago159
Pago159 09.03.2015 aktualisiert um 10:33:24 Uhr
Goto Top
Hallo bastla,

vielen Dank schon mal für die schnelle Hilfe. Das hat mich schon mal ein ganzes Stück weiter gebracht!

Was mich allerdings wundert, ist dass ich hin und wieder die Ordner in dem Profil angezeigt bekomme, und bei anderen die Eigentlichen Profilordner.

Ich konnte das ganze soweit eingrenzen, dass wenn ich nach einer Userkennung Explizit suche, dann wird mit der Inhalt des Profilordner ausgegeben,
wenn ich hingegen nach einer Userkennung inkl. variabler Erweiterung Suche, dann werden die Ordnernamen der Profilordner ausgegeben.
Hier eine Beispielausgabe:

Ja, es wurden folgende Profile für \\Server01\C:\Users\Testuser gefunden: 
Contacts
Desktop
Documents
Downloads
Favorites
Links
Music
Pictures
Saved Games
Searches
Videos
___________________________________________________________________
Ja, es wurden folgende Profile für \\Server01\C:\Users\Testuser* gefunden: 
Testuser
Testuseradmin
bastla
Lösung bastla 10.03.2015, aktualisiert am 11.03.2015 um 09:04:32 Uhr
Goto Top
Hallo Pago159!

Eigentlich nicht verwunderlich - bei einem "dir /b Testuser" (also mit exakter Angabe des Ordnernamens) wird natürlich der Inhalt des Ordners angezeigt, während "dir /b Testuser*" ja nur die zum Suchmuster passenden Ordnernamen liefern kann. Wenn Du daher generell nach \\%1\C$\Users\%lck%* suchst, solltest Du immer nur die Userordner angezeigt bekommen.

Grüße
bastla