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-Key: 139068

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

Printed on: April 19, 2024 at 01:04 o'clock

Member: bastla
bastla Mar 24, 2010 at 14:22:51 (UTC)
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
Member: aleks86
aleks86 Mar 24, 2010 at 14:28:29 (UTC)
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
Member: bastla
bastla Mar 24, 2010 at 14:50:53 (UTC)
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
Member: aleks86
aleks86 Mar 24, 2010 at 15:04:44 (UTC)
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
Member: Biber
Biber Mar 24, 2010 at 15:32:48 (UTC)
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
Member: bastla
bastla Mar 24, 2010 at 17:56:29 (UTC)
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