aleks86
Goto Top

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

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

bastla
bastla 24.03.2010 um 15:22:51 Uhr
Goto Top
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:
@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%
Grüße
bastla
aleks86
aleks86 24.03.2010 um 15:28:29 Uhr
Goto Top
Hi bastla,

danke für die Hilfe, hatte ich aber leider vergessen zu erwähnen.

Ich kann leider kein WMI verwenden da ich auch Ordner auf einem NetApp Filer habe welcher ein Unix/Linux System ist.

Sorry, hab ich vergessen.

Trotzdem danke für die Hilfe.


Gruss
Aleks86
bastla
bastla 24.03.2010 um 15:50:53 Uhr
Goto Top
Hallo aleks86!

Dann wirst Du wohl um etwas in der Art:
for /f "tokens=3*" %%i in ('dir /ad /q "C:\Documents and Settings"^|find ".."') do set "Besitzer=%%j"  
echo %Besitzer%
nicht herumkommen ...

Grüße
bastla
aleks86
aleks86 24.03.2010 um 16:04:44 Uhr
Goto Top
Hallo,

genial, danke! Am Ende sind noch die zwei Punkt gelistet (..). Wäre cool wenn man die noch wegbringen würde, falls nicht ist auch ok.

Gruss
Biber
Biber 24.03.2010 um 16:32:48 Uhr
Goto Top
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.
>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
bastla
bastla 24.03.2010 um 18:56:29 Uhr
Goto Top
... wobei es, bei genauerer Betrachtung, auch noch ein Leerzeichen davor geben sollte - daher:
for /f "tokens=4" %%i in ('dir /ad /q "C:\Documents and Settings"^|find ".."') do set "Besitzer=%%i"
Zur Sicherheit (falls der Name des Besitzers doch zu lang sein sollte und daher das trennende Leerzeichen fehlt), auch noch den String ".." entsorgen:
set "Besitzer=%Besitzer:..=%"
Grüße
bastla