Dateien eines Anwenders suchen

Schönen guten Tag,

ich möchte gerne auf einem Computer mit dem Betriebssystem XP Pro SP2 nach allen Dateien suchen, die ein bestimmter lokaler Anwender angelegt hat.

Hintergrund ist folgendes: Ein Mitarbeiter hat unsere Firma verlassen. Er ist (kein Scheiß) einfach gegangen und nicht wieder gekommen. Ohne jegliches Wort, ohne Übergabe seiner Arbeit. Nein, das Betriebsklima ist eigentlich richtig gut hier. Ist ja auch egal.

Ich möchte nun alles, was er in seiner Zeit bei uns auf seiner XP-Maschine erstellt hat, aufspüren, archivieren und seinem künftigen Nachfolger zur Verfügung stellen. Dabei möchte ich auch die Dateien finden, die er nicht in Eigene Dateien gespeichert hat.

Wie bekomme ich das hin? Ich kriege so etwas mit Unix oder auf dem Mac hin, aber irgendwie übersehe ich wohl, wie es mit XP geht.

Gruß,
Stefan

ich möchte gerne auf einem Computer mit dem Betriebssystem XP
Pro SP2 nach allen Dateien suchen, die ein bestimmter lokaler
Anwender angelegt hat.

Es ist anzunehmen, dass diese Dateien als Besitzer den Anwender aufweisen, der sie erstellt/kopiert hat. Du musst also nur den gesamten PC nach Dateien im Besitz dieses Anwenders durchsuche. Klingt einfach, leider sind mir aber keine Bordmittel bekannt, mit denen dies unter Windows ginge (mit Ausnahme einer ganz üblen Krücke, wenn die Dateien auf einem mit Quota versehenen Laufwerk liegen).

Es gibt für Perl eine Klasse Win32::stuck_out_tongue:erms http://www.roth.net/perl/perms/ mit deren Hilfe du in einem einfachen rekursiven Script den Besitzer ermitteln kannst. Bei Bedarf schicke ich dir eine Kopie meines Scripts zu, das allerdings mit einer solchen Sauklaue geschrieben ist, dass ich es hier unter meinem Namen nicht veröffentlichen will.

Das Script hat allerdings den Nachteil, dass Win32::stuck_out_tongue:erms ein (oder mehrere) Speicherleck aufweist, welches m. W. bis heute nicht behoben ist. Bei 70.000 Dateien habe ich einen Hauptspeicherbedarf > 500 MB.

Falls du eine elegantere Lösung findest, wäre es mir nett, wenn du eine entspr. Info hier veröffentlichtest.

Gruss
Schorsch

Hallo,

Es ist anzunehmen, dass diese Dateien als Besitzer den
Anwender aufweisen, der sie erstellt/kopiert hat. Du musst
also nur den gesamten PC nach Dateien im Besitz dieses
Anwenders durchsuche. Klingt einfach, leider sind mir aber
keine Bordmittel bekannt, mit denen dies unter Windows ginge
(mit Ausnahme einer ganz üblen Krücke, wenn die Dateien auf
einem mit Quota versehenen Laufwerk liegen).

man könnte die Ausgabe von

dir /q /n /s \*

mit einem geeigneten regulären Ausdruck bearbeiten, der die Zeilen mit Dateien mit falschen' Besitzern entfernt. Also grob z.B. -- falls grep zur Verfügung steht ([http://www.gnu.org/software/grep/grep.html](http://www.gnu.org/software/grep/grep.html)) -- für den Benutzer Philipp’:

dir /q /n /s \* |grep --regexp="\(^ Verzeichnis von \)\|\(Philipp\)"

(das ist noch optimierbar)


PHvL

2 „Gefällt mir“

man könnte die Ausgabe von

dir /q /n /s *

Der Parameter /q war mir bislang unbekannt. Mangels Vorhandensein kann ich ihn unter xp derzeit nicht testen, unter w2k ist die Ausgabe etwas seltsam:

20.06.2003 14:00 4.570 VORDEFINIERT\Administraamipro.sam
20.06.2003 14:00 5.632 VORDEFINIERT\Administraexcel.xls
20.06.2003 14:00 1.518 VORDEFINIERT\Administraexcel4.xls
20.06.2003 14:00 2.448 VORDEFINIERT\Administralotus.wk4
20.06.2003 14:00 12.288 VORDEFINIERT\Administrapowerpnt.ppt
20.06.2003 14:00 461 VORDEFINIERT\Administrapresenta.shw
20.06.2003 14:00 4.017 VORDEFINIERT\Administraquattro.wb2
20.06.2003 14:00 58 VORDEFINIERT\Administrasndrec.wav
10.09.2004 02:10 276 VORDEFINIERT\Administrasoffice.html
10.09.2004 02:10 2.018 VORDEFINIERT\Administrasoffice.sxc
10.09.2004 02:10 2.050 VORDEFINIERT\Administrasoffice.sxd
10.09.2004 02:10 2.051 VORDEFINIERT\Administrasoffice.sxi
10.09.2004 02:10 2.088 VORDEFINIERT\Administrasoffice.sxw
20.06.2003 14:00 4.608 VORDEFINIERT\Administrawinword.doc
20.06.2003 14:00 1.769 VORDEFINIERT\Administrawinword2.doc
20.06.2003 14:00 30 VORDEFINIERT\Administrawordpfct.wpd
20.06.2003 14:00 57 VORDEFINIERT\Administrawordpfct.wpg

Kommt xp besser damit zurecht? Ist unter xp auch der Pfad erkennbar, in dem die Datei liegt?

Danke
Schorsch

Hallo,
die Ausgabe ist unter XP gleich.

Kommt xp besser damit zurecht? Ist unter xp auch der Pfad
erkennbar, in dem die Datei liegt?

Damit der Pfad in der Ausgabe steht, hatte ich das Regexp eben gerade so gewählt (modulo einer je nach grep-version nötigen Maskierung):

"(^ Verzeichnis von )|(Philipp)"

findet alle Zeilen, die mit " Verzeichnis von " beginnen oder Philipp enthalten.

Jetzt müsste man noch von zwei aufeinanderfolgenden Zeilen, die mit " Verzeichnis von " beginnen die erste löschen.

Ersetzt man grep durch sed, hat man mehr Möglichkeiten: mit dem Skript dir.sed:

s/^ Verzeichnis von \(.\*\)/\1/
t newdir
s/.\{36\}COMPUTER\\Philipp\s\*\(.\*\)/\\\1/
T
x
P
x
p
b
 : newdir
h

(dabei habe ich jetzt auch den Rechnernamen COMPUTER eingefügt) erzeugt

dir /q /n /s \*|sed -n -f dir.sed

eine Dateiliste (momentan noch mit Umbruch zwischen Pfad und Datei).


PHvL

Hallo,
die Ausgabe ist unter XP gleich.

Es ist etwas ärgerlich, dass Domäne\Benutzer auf 23 Stellen beschränkt ist, und dass die Ausgabe in der Eingabeaufforderung nicht ANSI ist, so dass ein pipen in eine Textdatei sämtliche Umlaute unleserlich macht. Nun, für Stefans Zwecke wirds reichen; ich bleibe wohl bei meinen bisherigen Scripten, die eine Auswertung im Webbrowser erlauben.

Dennoch danke für den Tipp, ich kann mir denken, dass ich den Parameter /q in Zukunft häufiger nutzen werde.

Gruss
Schorsch

man könnte die Ausgabe von

dir /q /n /s *

mit einem geeigneten regulären Ausdruck bearbeiten, der die
Zeilen mit Dateien mit `falschen’ Besitzern entfernt.

Yep, das war eine gute Idee und hat geholfen. Vielen Dank, ich kannte den Parameter /q nicht.

Ich habe es jetzt einfach so gemacht, dass ich die Ausgabe von dir /q /n /s * eine Datei geschrieben und die Filterung auf einer Linuxmaschine vorgenommen habe.

Gruß,
Stefan