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.
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: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: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.
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\)"
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.
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.