Allg. erweiterte Dateiattribute auslesen (ersteller einer Datei)

callback

Redshirt
Mitglied seit
19.04.2010
Beiträge
3
Renomée
0
Hallo,

Ich habe das problem, dass auf einem Fileserver(NTFS) sehr sehr viele Dateien in vielen Unterordnern verstreut liegen, da diese ganze Dateistruktur neu geordnet und verschoben werden soll, muss ich für jede Datei herausfinden, wer diese ehemalig erstellt hat, um diesen User zu fragen, wohin die Datei inhaltlich am besten passt. Es handelt sich hierbei um Datein verschiedenen Types, u.a. .pdf .doc .dot .xls .html .mdb ...

Ich habe es bereits über den cmd befehl "dir /q" probiert, allerdings gibt mir dieser befehl nicht den ersteller/Autor einer Datei aus, sondern lediglich die letzte person die die Datei bearbeitet hat.

Nun Zu dem was ich erreichen will:
Ich will ein Script oder Programm, am anfang kommt eine eingabeaufforderung(soweit ja kein Problem), hier gibt man dann den Pfad ein, und dass Prog. bzw. Script speichert mir dann eine Liste aller Dateien dieses Ordners + Dateien aus unterordnern mit dem vollständigen Dateipfad und dem Ersteller/Autor der Datei in eine .txt Datei.
Am liebsten wäre mir hier eine lösung in vbscript oder Visual Basic.

Vielen Dank für eure Hilfe

CALLBACK
 
Herausfinden, wer eine Datei erstellt hat, kannst du bei keinem OS, weil kein (mir bekanntes) Dateisystem eine derartige Information speichert. Was gespeichert wird, ist der Besitzer einer Datei - der muss aber nicht zwingend der Ersteller sein, vor allem dann, wenn Vererbung von Rechten im Spiel ist.

callback schrieb:
Ich habe es bereits über den cmd befehl "dir /q" probiert, allerdings gibt mir dieser befehl nicht den ersteller/Autor einer Datei aus, sondern lediglich die letzte person die die Datei bearbeitet hat.
Nein, das gibt den Besitzer einer Datei aus, wie man mit
Code:
dir /?
erfahren kann. Der Besitz einer Datei verändert sich nicht, wenn sie bearbeitet wird (es sei denn, das entsprechende Bearbeitungsprogramm macht das (SolidWorks *suspect*)). Der Besitzer einer Datei wird beim Erstellen derselben festgelegt. Insofern kannst du schon die genannte Methode benutzen, auch wenn nicht sichergestellt ist, dass die angegebenen Besitzer stimmen.

MfG Dalai
 
Herausfinden, wer eine Datei erstellt hat, kannst du bei keinem OS, weil kein (mir bekanntes) Dateisystem eine derartige Information speichert. Was gespeichert wird, ist der Besitzer einer Datei - der muss aber nicht zwingend der Ersteller sein, vor allem dann, wenn Vererbung von Rechten im Spiel ist.
Ok ich kenn mich da jetzt nicht so gut aus, aber wenn ich in einem Ordner auf Detailansicht umstelle, und dann in der Menüleiste auf Ansicht > Details Auswählen gehe, dann kann ich hier zum einen Auswählen, dass es mit den Besitzer anzeigt, und zum anderen den Autor, ist dann hier der Autor der Ersteller, oder derjeniger, der die Datei zuletzt bearbeitet hat???
Was ich aber noch vermute, so speichert z.B. Excel zum Einen den Ersteller einer Datei und zum anderen den letzten Bearbeiter der Datei in Klartext in der Datei, wäre es zumindest hier möglich über ein Script sicher den Ersteller einer Datei auszulesen???

MfG

CALLBACK
.
EDIT :
.

Ok ich habs jetzt mit dem cmd-Befehl dir geschafft, Die genaue Syntax die ich verwende lautet hierbei:
dir pfad /A:-D /S /Q > pfad für logdatei
Nun habe ich das Problem, dass ich hier eine Benutzereingabe realisiern will, wo der User den zu scannenden Pfad, und den Pfad für die Ausgabe Textdatei eingeben kann, bisher sieht dass ganze bei mir so aus:
Code:
set /P pfadtorun =Bitte den Pfad zum Ordner angeben, der gescannt werden soll:
set /P pfadtolog =Bitte den Pfad zur logdatei angeben:

dir %pfadtorun% /A:-D /S /Q > %pfadtolog%

exit
Allerdings läuft es noch nicht, und zwar gibt es hier Probleme mit den Variablen in der dir-methode, wobei ich mir sicher war, dass ich mir so ähnlich schon mal die Ordnerstruktur wegesichter habe, in eine Textfile, wo der name durch die variable %date% bestimmt wurde.
Vielleicht kann mir hier ja einer von euch helfen, ich weis wirklich nicht was ich mit den Variablen falsch mache.
*noahnung*
MfG

CALLBACK
 
Zuletzt bearbeitet:
Ok ich kenn mich da jetzt nicht so gut aus, aber wenn ich in einem Ordner auf Detailansicht umstelle, und dann in der Menüleiste auf Ansicht > Details Auswählen gehe, dann kann ich hier zum einen Auswählen, dass es mit den Besitzer anzeigt, und zum anderen den Autor, ist dann hier der Autor der Ersteller, oder derjeniger, der die Datei zuletzt bearbeitet hat???
Das sind aber keine Attribute von NTFS sondern nur bestimmter Dateitypen (auf einem NTFS-Dateisystem). Erstellst du dort z.B. eine simple Textdatei hat die mit Sicherheit keine Informationen dort stehen. Bei den Office-Typen kommt aber noch dazu, dass Benutzername und Organisation eingetragen werden, die in Excel bzw. Word hinterlegt sind und gar nichts mit dem echten Benutzernamen zu tun haben muss. Ich hab z.B. auf meinem PC einen Account namens "Dalai", mein Office ist aber auf "Name" registriert.

Was ich aber noch vermute, so speichert z.B. Excel zum Einen den Ersteller einer Datei und zum anderen den letzten Bearbeiter der Datei in Klartext in der Datei
Mit Sicherheit nicht im Klartext, so wie du es wohl meinst. Excel- und Word-Dokumente sind sogenannte typisierte Dateien (jedenfalls alles, was seit Office 2003 nicht XML ist), also irgendwelche Binärdateien.

wäre es zumindest hier möglich über ein Script sicher den Ersteller einer Datei auszulesen???
Hier kenne ich mich leider nicht aus. Aber nützt dir das überhaupt was, wenn es doch eine Reihe versch. Dateitypen zu sortieren gilt?

Code:
set /P pfadtorun =Bitte den Pfad zum Ordner angeben, der gescannt werden soll:
set /P pfadtolog =Bitte den Pfad zur logdatei angeben:

dir %pfadtorun% /A:-D /S /Q > %pfadtolog%

exit
Das wird so nichts, weil keine Leerzeichen vor dem Gleichheitszeichen sein dürfen. Davon abgesehen solltest du die Variablen bei Benutzung quoten, falls im eingegebenen Pfad Leerzeichen sind.

MfG Dalai
 
EDIT: sry hab das geschrieben, bevor ich deinen Beitrag gelesen habe, habe vergessen zu aktualisieren
EDIT ENDE

*buck* Ich bin sehr verwirrt, ich habe jetzt die lösung für mein Problem gefunden.
Aber erstmal zu dem Titel:
Die lösung meines Problems ist diese Zeile:
Code:
dir "%pfadtorun%" /A:-D /S /Q > %pfadtolog%
Und genau diese Zeile ist auch schon mein nächstes Problem:
wenn ich jetzt die Eingabeaufforderung (cmd.exe) öffne, die Variable "pfadtorun" als "C:\Program Files\" und die variable "pfadtolog" als "C:\log.txt" deklariere, und anschließend besagte eingabe eintippe funktioniert es bei mir einwandfrei, und das Programm gibt mir alle Dateien auch die aus den Unterordnern mitsammt erstellungsdatum und Besitzer in eine Textdatei aus.
Wenn ich nun allerdings follgende Batch-Datei starte:
Code:
set /P pfadtorun =Bitte den Pfad zum Ordner angeben, der gescannt werden soll:
set /P pfadtolog =Bitte den Pfad zur logdatei angeben:
dir "%pfadtorun%" /A:-D /S /Q > %pfadtolog%
und hier für die beiden Variablen wieder die gleichen werte eingebe wie bereits oben erwähnt, arbeitet das Programm die zeile "dir "%pfadtorun%" /A:-D /S /Q > %pfadtolog%"
gar nicht ab, sondern beendet sich einfach, ohne einen Fehler zu bringen, bzw. etwas in die logdatei auszugeben, aus irgendeinem grund bircht das Programm nach der eingabe der Variablen einfach ab, ich habe bereits den Pause-Befehl an das ende der Datei gehängt, allerdings hilft dies nicht, weil das Programm anscheinend gar nicht soweit abgearbeitet wird.

Weis vlt. einer von euch, was ich hier Falschmache oder hat einer von euch ne ahnung, wie ich ein Batch-script Debuggen kann???

MfG

CALLBACK
.
EDIT :
.

ok Danke dir Dalai,
das is die Lösung des Problems:
Code:
echo off
cls
set /P pfadtorun=Bitte den Pfad zum Ordner angeben, der gescannt werden soll:
set /P pfadtolog=Bitte den Pfad zur logdatei angeben:
dir "%pfadtorun%" /A:-D /S /Q > %pfadtolog%
exit
wobei die anführungsstriche um pfadtorun und pfadtolog nur bewirken, dass hier auch leerzeichen verwendet werden können.

In Dank und Annerkennung

CALLBACK

PS:
Dalai schrieb:
Mit Sicherheit nicht im Klartext, so wie du es wohl meinst. Excel- und Word-Dokumente sind sogenannte typisierte Dateien (jedenfalls alles, was seit Office 2003 nicht XML ist), also irgendwelche Binärdateien.
Mit klartext meine ich Hierbei ASCII-CODE, wenn eine excel Datei öffne, ändere und speichere, dann mit einem TextEditor öffne, ist ja der großteil nur irgendwelche komische zeichen, (da excel dateiformat und kein ASCII-CODE) wenn ich allerdings nach meinem UserName suche, dann finde ich diesen in der Datei 2 mal in ASCII-CODE hinterlegt, und wenn ich nach dem UserNamen des Erstellers suche, so wird dieser einmal gefunden, ebenfalls in ASCII-CODE hinterlegt, allerdings wäre dies sehr schwer auszulesen, weil diese Informationen nicht an einem festen Platz in dem Dokument sind, sondern von Datei zu Datei wo anderst, allso von der Offset-Adresse her.
 
Zurück
Oben Unten