Dateiowner über for-schleife auslesen und in Text-Datei ausgeben
Hallo, ich beschäftige mich erst seit kurzem mit der Kommandozeile und habe nun noch eine Frage an der ich leider selbst nicht weiterkomme.
Ich benutze derzeit die Kommandozeile unter Windows XP und habe bisher den DIR-Befehl über folgende For-Schleife:
For /f "delims=" %i in ('dir /s /q /T:A /-C /b C:\ pfad\zur\datei/dateiname\*.*') do @echo %~dpnxi;%~zi;%~ti;%~nxi; >> C:\Ausgabe.txt
ausgeben lassen.
Ich benötige eine Textdatei in der folgende Spalten vorkommen sollen, jeweils durch semikolon getrennt:
[PfadzurDatei\Dateiname;Dateigroesse;Datum&Uhrzeit;Dateiname.Dateiendung;DateiOwner]
Bisherige Ausgabe:
C:\ PfadzurDatei\Dateiname;32768;11.11.2008 11:56; Dateiname.doc;
Mir fehlt nun noch der Übergabeparameter für den DateiOwner. Ich hoffe es hat jemand eine Idee.
Dazu nur kurz: ich möchte das komplette Abteilungslaufwerk, in eine Textdatei auslesen um es in einem anderen System auszuwerten. Dazu brauche ich eben auch den Besitzer jeder Datei.
Hoffe sehr auf rasche Hilfe.
Vielen Dank im Voraus.
Ich benutze derzeit die Kommandozeile unter Windows XP und habe bisher den DIR-Befehl über folgende For-Schleife:
For /f "delims=" %i in ('dir /s /q /T:A /-C /b C:\ pfad\zur\datei/dateiname\*.*') do @echo %~dpnxi;%~zi;%~ti;%~nxi; >> C:\Ausgabe.txt
ausgeben lassen.
Ich benötige eine Textdatei in der folgende Spalten vorkommen sollen, jeweils durch semikolon getrennt:
[PfadzurDatei\Dateiname;Dateigroesse;Datum&Uhrzeit;Dateiname.Dateiendung;DateiOwner]
Bisherige Ausgabe:
C:\ PfadzurDatei\Dateiname;32768;11.11.2008 11:56; Dateiname.doc;
Mir fehlt nun noch der Übergabeparameter für den DateiOwner. Ich hoffe es hat jemand eine Idee.
Dazu nur kurz: ich möchte das komplette Abteilungslaufwerk, in eine Textdatei auslesen um es in einem anderen System auszuwerten. Dazu brauche ich eben auch den Besitzer jeder Datei.
Hoffe sehr auf rasche Hilfe.
Vielen Dank im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 120084
Url: https://administrator.de/forum/dateiowner-ueber-for-schleife-auslesen-und-in-text-datei-ausgeben-120084.html
Ausgedruckt am: 19.04.2025 um 13:04 Uhr
8 Kommentare
Neuester Kommentar
Es gibt zwei Gründen, weshalb Du Dein Vorhaben mit Powershell machen solltest.
1. Die Commandoshell ist ein Auslaufmodell und kann im Vergleich zu Powershell nichts! (Sorry an alle CMD-Liebhaber)
2. Mit Powershell ist Dein vorhaben auch mit einer Zeile umsetzbar samt allen Eigenschaften der Datei inkl. der Ausgabe als CSV Datei, welche für Deine Auswertung vielleicht wichtiger ist.
Wenn Du Powershell verwenden willst, helfe ich Dir gerne bei der Umsetzung Deines Vorhabens. Vielleicht sollten wir Deine angestrebte Auswertung mal näher beleuchten. Was willst Du auswerten? Wie willst Du auf das Ergebnis reagieren?
Lg mexx
1. Die Commandoshell ist ein Auslaufmodell und kann im Vergleich zu Powershell nichts! (Sorry an alle CMD-Liebhaber)
2. Mit Powershell ist Dein vorhaben auch mit einer Zeile umsetzbar samt allen Eigenschaften der Datei inkl. der Ausgabe als CSV Datei, welche für Deine Auswertung vielleicht wichtiger ist.
Wenn Du Powershell verwenden willst, helfe ich Dir gerne bei der Umsetzung Deines Vorhabens. Vielleicht sollten wir Deine angestrebte Auswertung mal näher beleuchten. Was willst Du auswerten? Wie willst Du auf das Ergebnis reagieren?
Lg mexx

Du kannst das Ergebnis aus der ersten for-Schleife an eine Subroutine übertragen mit call :process "%"
Im Dir-Befehl sind imo nur die Parameter /B und /S wirksam, denn die Anzeige des letzen Zugriffs beinhaltet üblicherweise lediglich das Datum und keine Zeitangabe.
In der Subroutine kannst du dann aus dem übergebenen Parameter %1 deine Variablen aufbauen und anschließend mit showacls aus den Ressource Kit Tools den
"ERSTELLER-BESITZER" ebenfalls mit einer for-Schleife ermitteln. Das Ergebnis schreibst du in eine .csv und brauchst keine Powershell zu installieren.
Im Dir-Befehl sind imo nur die Parameter /B und /S wirksam, denn die Anzeige des letzen Zugriffs beinhaltet üblicherweise lediglich das Datum und keine Zeitangabe.
In der Subroutine kannst du dann aus dem übergebenen Parameter %1 deine Variablen aufbauen und anschließend mit showacls aus den Ressource Kit Tools den
"ERSTELLER-BESITZER" ebenfalls mit einer for-Schleife ermitteln. Das Ergebnis schreibst du in eine .csv und brauchst keine Powershell zu installieren.
Moin aeleen,
willkommen im Forum.
Falls Du doch einfach Deine CMD-Zeile um ein paar Zeichen erweitern willst, dann ersetze denn Teil nach dem "DO..." so:
Dann hast Du es wie gewünscht.
Ich nutze also deinen bisherigen Befehl, der ja ALLE Dateien mit der Suchmaske "*.*" liefert
und führe danach auf die EINZELNE Datei das DIR /Q nach derselben Mimik (auch in einer FOR/F-Anweisung ausgewertet) aus.
Grüße
Biber
willkommen im Forum.
Falls Du doch einfach Deine CMD-Zeile um ein paar Zeichen erweitern willst, dann ersetze denn Teil nach dem "DO..." so:
For /f "delims=" %i in ('dir /s /q /T:A /-C /b C:\ pfad\zur\datei/dateiname\*.*') do ...
--> jetzt dahinter eine "DIR /Q" (DIR mit OWNER-Anzeige) For /f "delims=" %i in ('dir /s /q /T:A /-C /b C:\ pfad\zur\datei/dateiname\*.*') do...
@For /f "tokens=4" %a in ('dir /q "%i"^|find /i "%~nxi"') do @echo %~dpni;%~zi;%~ti;%~nxi;%a;
Ich nutze also deinen bisherigen Befehl, der ja ALLE Dateien mit der Suchmaske "*.*" liefert
und führe danach auf die EINZELNE Datei das DIR /Q nach derselben Mimik (auch in einer FOR/F-Anweisung ausgewertet) aus.
Grüße
Biber

@Biber
den /Q Parameter kannte ich noch nicht, den habe ich glatt übersehen.
Aber meinen Hinweis zum /T-Parameter hast du leider überlesen, der funktioniert nämlich nicht im Zusammenhang mit /B
den /Q Parameter kannte ich noch nicht, den habe ich glatt übersehen.
Aber meinen Hinweis zum /T-Parameter hast du leider überlesen, der funktioniert nämlich nicht im Zusammenhang mit /B
Moin dumdideldum & Aeleen,
@80220
Ja, stimmt, Deine "DIR /T"-parameter-Anmerkung habe ich überlesen. Sorry.
@Aeleen
Aber, falls Du wirklich das "DIr /t:a"/Letzte Zugriffsdatum brauchst... ginge auch mit den beiden FOR-Anweisungen
Die zweite FOR /F-Anweisung sollte dann so aussehen:
%a = Datum letzter Zugriff
%b = Zeit letzter Zugriff
%d = Owner der Datei
^^ Setzt Du noch einen grünen Haken dran bitte und schreibst nie wieder "Vielen Dank im voraus" hier?
Grüße
Biber
@80220
Ja, stimmt, Deine "DIR /T"-parameter-Anmerkung habe ich überlesen. Sorry.
@Aeleen
Aber, falls Du wirklich das "DIr /t:a"/Letzte Zugriffsdatum brauchst... ginge auch mit den beiden FOR-Anweisungen
- mit der ersten "FOR/F in DIR"-Anweisung wie oben stehend ein "DIR /B /S" über alles und über alle Ebenen
- mit der zweiten wie oben stehende ein "DIR /Q" auf jede einzelne Datei + zusätzlich dort den /T:a-Schalter einbauen
- und von dieser zweiten Ausgabe nicht nur das 4. Token (OWNER), sondern auch Token 1 & 2 (Datum/Uhrzeit) verwerten.
Die zweite FOR /F-Anweisung sollte dann so aussehen:
.... @for /f "tokens=1-4" %a in ('dir /q "%i"^|find /i "%~nxi"') DO....
... wobei dann sein wird:%a = Datum letzter Zugriff
%b = Zeit letzter Zugriff
%d = Owner der Datei
^^ Setzt Du noch einen grünen Haken dran bitte und schreibst nie wieder "Vielen Dank im voraus" hier?
Grüße
Biber