rony-x2
Goto Top

Dateiinformationen per Batch auslesen.

Hallo,

ich möchte gerne verschiedene Informationen von verschiedenen Daten/-Typen auslesen.
Wer hat die datei erstellt, wer ist besitzer, wer hat welche rechte. Naja das mit der größe und so ist ja recht leicht.

Leider konnte mit Google nicht besonders helfen face-sad

Mit ersteller meine ich - den Benutzer der diese Datei auf die Festplatte kopiert/verschoben/erstellt hat.

Ich benötige es um statistiken anzufertigen.

Danke schonmal face-smile

Content-Key: 109660

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

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

Member: bastla
bastla Feb 21, 2009 at 20:52:50 (UTC)
Goto Top
Hallo rony-x2!
Wer hat die datei erstellt,
Mir ist keine Methode bekannt, das herauszufinden ...
wer ist besitzer,
Ließe sich etwa mit folgendem (in einen Batch integrierten) VBScript ermitteln (wobei unter Vista der Wert 8 in Zeile 7 durch 10 zu ersetzen wäre - siehe zB hier):
@echo off & setlocal
set "Ordner=D:\Dein Ordner"  
set "Datei=Deine Datei.Typ"  

set G=%temp%\GetExtFileAttr.vbs
>%G%  echo Set Fld=CreateObject("Shell.Application").Namespace(WScript.Arguments(0)):For Each F In Fld.Items  
>>%G% echo If LCase(F.Name)=LCase(WScript.Arguments(1)) Then:WScript.Echo Fld.GetDetailsOf(F,8):Exit For:End If:Next

for /f "delims=" %%i in ('cscript //nologo %G% "%Ordner%" "%Datei%"') do set "Besitzer=%%i"  
echo Besitzer: %Besitzer%
wer hat welche rechte
cacls "D:\Dein Ordner\Deine Datei.Typ"
Grüße
bastla
Member: rony-x2
rony-x2 Feb 22, 2009 at 12:36:37 (UTC)
Goto Top
Danke für die Hilfe,
Komme aber auch mit den erstem vorschlägen nicht so ganz zurecht.

Beim ersten, steh nach dem anpassen und ausführen nur "Besitzer:" da.
Das ändern des wertes zu 10 hab ich gemacht, da ich es auf einem vista rechner teste, aber später und Srv2003 laufen soll.


Edit:

zum zweiten hab ich auch nochmal eine frage

cls
del C:\list.txt
del C:\cac.txt
dir C:\Fraps\*.* /s /a:-d :-h /b >> "C:\list.txt"  

for /f "tokens=1" %%i in (C:\list.txt) do cacls "%%i" >> "C:\cac.txt"  
pause

Wenn ich also alle Dateien der Unterordner it ihren rechten anschauen will, geht das net so ganz.
Member: bastla
bastla Feb 22, 2009 at 13:04:42 (UTC)
Goto Top
Hallo rony-x2!

Zum Auslesen des Besitzers: Getestet hatte ich's nur unter XP und mich auf die Angabe in der verlinkten Tabelle verlassen, aber als Alternative könnte ich eine Zeile zur Verwendung mit setacl anbieten:
for /f "tokens=1*" %%i in ('setacl -on "D:\Deine Ordner\Deine Datei.Typ" -ot file -actn list -lst "f:tab;w:o"^|findstr "Owner:"') do set "Besitzer=%%j"
Um das Ganze in eine Schleife zu packen, ungetestet etwa so:
@echo off & setlocal
set "Basis=C:\Fraps\"  
set "Typ=*.*"  
set "Erg=C:\cac.txt"  

if exist "%Erg%" del "%Erg%"  
for /f "delims=" %%i in ('dir /s /b /a-d-h "%Basis%%Typ%"') do (  
    echo Datei: %%i
    for /f "tokens=1*" %%a in ('setacl -on "%%i" -ot file -actn list -lst "f:tab;w:o"^|findstr "Owner:"') do echo Besitzer: %%b  
    cacls "%%i"  
    echo ==============================================
    echo\
)>>"%Erg%"  
Bitte beachten: Die Angabe des Basispfades in Zeile 2 muss mit einem "\" enden ...

Grüße
bastla
Member: rony-x2
rony-x2 Feb 22, 2009 at 15:04:36 (UTC)
Goto Top
ok, funktioniert besstens.

aber ich glaube ich beschreibe mal was ich mir so als ziel vorgestellt habe, denn ich zweifel mittlerweile daran ds es mit batch realisierbar ist.

Ich werde einen Netzwerkordner freigeben, so das man auf dem inet darauf zugreifen kann (normale freigabe mit portumleitung bei der firewall). Nun bekommen verschiedenen Bernutzer darauf rechte. Jeder der Benutzer darf Daten hochladen, und andere daten lesen, aber auch nur seine eignen löschen bzw verändern, außer er gibt einem anderen user auch rechte daran.
Da so sehr viele kleine Daten in dem Ordner liegen werden (Der upload der User is ja sehr begrenzt) soll eine art übersicht auf einer inet-seite erstellt werden, die sich z.b. Stündlich aktuallisiert.

In dieser soll angezeigt werden -
Welcher user hat auf welchen daten welche rechte.
Welcher User hat wieviel daten.
Welcher user verbraucht wieviel speicher
Welche Daten gehörem welchem user.
Wieviel speicher gesammt noch vervügbar

Nun dachte ich das könne man mit batch machen... doch meine anfängliche hoffung dort selber etwas zu erstellen schwindet dahin face-sad

Gibt es vielicht ein tool welches eine so genaue inventarisierung der Dateien vornehmen kann?