Ordnerbesitzer (Folder owner) mit Batch auslesen
Besitzer eines Ordner mit dem Befehl dir und fin auslessen, ohne sonstige Informationen
Hallo,
ich brauche Hilfe, ich habe bereits einen Teil der Lösung oder besser gesagt einen Lösungsansatz, aber der Rest erschliesst sich mir nicht. Hoffe ihr habt Tipps für mich.
Ich versuche den Besitzer eines Ordner auszulesen, mit Batch.
Mit diesem Befehl kann ich die ganze Zeile des betreffenden Ordners ausgeben:
dir "C:\Documents and Settings" /ad /q | find /i ".."
als Resultat erhalte ich das:
02.12.2009 09:00 <DIR> BUILTIN\Administrators ..
Ich allerdings möchte nur als Ausgabe "BUILTIN\Administrators" !
Ist das überhaupt möglich?
Die Suche hatte ich bedient, aber nicht gefunden.
Danke schon im Voraus
aleks86
Hallo,
ich brauche Hilfe, ich habe bereits einen Teil der Lösung oder besser gesagt einen Lösungsansatz, aber der Rest erschliesst sich mir nicht. Hoffe ihr habt Tipps für mich.
Ich versuche den Besitzer eines Ordner auszulesen, mit Batch.
Mit diesem Befehl kann ich die ganze Zeile des betreffenden Ordners ausgeben:
dir "C:\Documents and Settings" /ad /q | find /i ".."
als Resultat erhalte ich das:
02.12.2009 09:00 <DIR> BUILTIN\Administrators ..
Ich allerdings möchte nur als Ausgabe "BUILTIN\Administrators" !
Ist das überhaupt möglich?
Die Suche hatte ich bedient, aber nicht gefunden.
Danke schon im Voraus
aleks86
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 139068
Url: https://administrator.de/forum/ordnerbesitzer-folder-owner-mit-batch-auslesen-139068.html
Ausgedruckt am: 22.04.2025 um 22:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo aleks86 und willkommen im Forum!
Wenn nichts dagegen spricht, dass sich der Batch ein wenig Hilfe von einem (selbst erstellten) VBScript holt, könnte das etwa so gehen:
Grüße
bastla
Wenn nichts dagegen spricht, dass sich der Batch ein wenig Hilfe von einem (selbst erstellten) VBScript holt, könnte das etwa so gehen:
@echo off & setlocal
set "Ordner=C:\Documents and Settings"
set "G=%temp%\GetOwner.vbs"
>%G% echo GetObject("winmgmts://./root/cimv2").Get("Win32_LogicalFileSecuritySetting=""" ^& Replace(WScript.Arguments(0), "\", "\\") ^& """").GetSecurityDescriptor objSD
>>%G% echo WScript.Echo objSD.Owner.Domain ^& "\" ^& objSD.Owner.Name
for /f "delims=" %%i in ('cscript //nologo "%G%" "%Ordner%"') do set "Besitzer=%%i"
echo %Besitzer%
bastla
Moin aleks86,
du kannst ja die gesetzte Variable %besitzer% in bastlas Beispiel noch nachbehandeln, wenn du als gesichert annehmen kannst, dass zwei Punkte am Ende sind:
Demo am CMD-Prompt; erste Zeile ohne ">" eingeben.
Wenn %besitzer% immer ein String der Form "texttexttext.." ist und die beiden ".." am Ende stören, dann
Grüße
Biber
du kannst ja die gesetzte Variable %besitzer% in bastlas Beispiel noch nachbehandeln, wenn du als gesichert annehmen kannst, dass zwei Punkte am Ende sind:
Demo am CMD-Prompt; erste Zeile ohne ">" eingeben.
>echo a[%besitzer%] b[%besitzer:.=%] oder c[%besitzer:~0,-2%]
a[VORDEFINIERT\Administra..] b[VORDEFINIERT\Administra] oder c[VORDEFINIERT\Administra]
Wenn %besitzer% immer ein String der Form "texttexttext.." ist und die beiden ".." am Ende stören, dann
- entweder alle "." durch "nichts" ersetzen (Variante b)
- oder, falls das zu unsauber ist, dann explizit die letzten beiden Zeichen entsorgen (Variante c)
Grüße
Biber
... wobei es, bei genauerer Betrachtung, auch noch ein Leerzeichen davor geben sollte - daher:
Zur Sicherheit (falls der Name des Besitzers doch zu lang sein sollte und daher das trennende Leerzeichen fehlt), auch noch den String ".." entsorgen:
Grüße
bastla
for /f "tokens=4" %%i in ('dir /ad /q "C:\Documents and Settings"^|find ".."') do set "Besitzer=%%i"
set "Besitzer=%Besitzer:..=%"
bastla