Erstellungsdatum mit Pfad auslesen
Hallo an alle,
ich versuche gerade eine Dateiliste zu erstellen die mir das Erstellungsdatum und Uhrzeit, die Dateigröße und den Pfad ausliest. Ich habe es auch schon soweit gebracht das ich das Datum mit Uhrzeit, die Dateigröße und den Dateinamen erhalte, allerdings bräuchte ich auch noch den Pfad der Datei. Ich hatte bereits eine ähnliche Methode, allerdings habe ich dort nur das Änderungsdatum erhalten:
Hier konnte ich am Ende sehr einfach angeben, welche Werte und in welcher Reihenvolge ich die ausgabe haben wollte. Außerdem war es Möglich zwischen den Parametern Trennzeichen einzufügen, das sollte auch gehen. (Hier habe ich das Trennzeichen "§" verwendet)
(die Funktion /Tc im DIR Befehl funktioniert hir anscheinend nicht)
Meine momentane Lösung sieht so aus:
Bei meiner jetztigen Funktion kann ich diese Parameter nicht verwenden, kenn mich dazu mit Batch leider zu wenig aus, um es selber zu schaffen. Es wäre außerdem sehr schön wenn ich auch gleich die Dateierweiterung schreiben könnte, ist aber nicht umbeding nötig.
Vielleicht kann mir ja auch einfach jemand eine Liste sagen, in der ich die Parameter für diese Funktion finde, ähnlich wie in der FOR-Hilfe ganz am Ende die Auflistung der Möglichkeiten.
Am Ende sollte es dann in etwa so aussehen:
01.10.2011 22:11 123456 Pfad Datei_mit_Dateierweiterung .txt
01.10.2011 22:12 123456 Pfad Datei2_mit_Dateierweiterung .txt
Hoffe ihr könnt mir helfen. Danke schon mal im Voraus.
Lg manni
ich versuche gerade eine Dateiliste zu erstellen die mir das Erstellungsdatum und Uhrzeit, die Dateigröße und den Pfad ausliest. Ich habe es auch schon soweit gebracht das ich das Datum mit Uhrzeit, die Dateigröße und den Dateinamen erhalte, allerdings bräuchte ich auch noch den Pfad der Datei. Ich hatte bereits eine ähnliche Methode, allerdings habe ich dort nur das Änderungsdatum erhalten:
FOR /F "delims=" %%i in ('dir /b /s /O-D /A-D *.*') do echo %%~ti§%%~zi§%%~dpi§%%~nxi§%%~xi >>test.txt
(die Funktion /Tc im DIR Befehl funktioniert hir anscheinend nicht)
Meine momentane Lösung sieht so aus:
FOR /F "Tokens=1*" %%f in ('dir /s /a-D /Tc ^|find "."') do echo %%f %%g >>test.txt
Bei meiner jetztigen Funktion kann ich diese Parameter nicht verwenden, kenn mich dazu mit Batch leider zu wenig aus, um es selber zu schaffen. Es wäre außerdem sehr schön wenn ich auch gleich die Dateierweiterung schreiben könnte, ist aber nicht umbeding nötig.
Vielleicht kann mir ja auch einfach jemand eine Liste sagen, in der ich die Parameter für diese Funktion finde, ähnlich wie in der FOR-Hilfe ganz am Ende die Auflistung der Möglichkeiten.
Am Ende sollte es dann in etwa so aussehen:
01.10.2011 22:11 123456 Pfad Datei_mit_Dateierweiterung .txt
01.10.2011 22:12 123456 Pfad Datei2_mit_Dateierweiterung .txt
Hoffe ihr könnt mir helfen. Danke schon mal im Voraus.
Lg manni
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 174031
Url: https://administrator.de/contentid/174031
Ausgedruckt am: 08.11.2024 um 02:11 Uhr
27 Kommentare
Neuester Kommentar
Hallo manni04!
War denn dieser "ähnliche" Beitrag (gleich da unten ) wirklich nicht zu finden?
Grüße
bastla
War denn dieser "ähnliche" Beitrag (gleich da unten ) wirklich nicht zu finden?
Grüße
bastla
Hallo manni04!
Bei mir läuft's übrigens (in der geposteten Fassung) als Batch (wobei ich ein vorhergehendes "
Grüße
bastla
Anscheinend werden alle Leerzeichen durch dieses Sonderzeichen ersetzt
Nö - "dieses Sonderzeichen" ist das gewünschte "§" - allerdings als ANSI-Zeichen (ich hatte den Code direkt im Browser ergänzt) - wenn Du das Ergebnis im Editor ansiehst, sollte es passen (ansonsten verwende eben "õ") ...Bei mir läuft's übrigens (in der geposteten Fassung) als Batch (wobei ich ein vorhergehendes "
@echo off
" vorausgesetzt hatte - ansonsten die "@" der "Originalfassung" beibehalten) ...Grüße
bastla
Hallo manni04,
bei mir funktioniert bastlas Zeile. Allerdings sehr langsam.
Probier mal folgendes:
Die Paragraphen kannst du natürlich auch durch Leerzeichen ersetzen.
Grüße
rubberman
bei mir funktioniert bastlas Zeile. Allerdings sehr langsam.
Probier mal folgendes:
@echo off
call :proc "%cd%"
pause
goto :eof
:proc
for /f "tokens=1-3*" %%f in ('dir /a-d /-c /tc /4 "%~1"^|findstr /vbc:" "') do >>"test.txt" echo %%f§%%g§%%h§%~1§%%i
for /f "delims=" %%i in ('dir /ad /b "%~1"') do call :proc "%~1\%%i"
goto :eof
Grüße
rubberman
@rubberman
Grüße
bastla
Allerdings sehr langsam.
... deswegen auch mein seinerzeitiger Kommentar dazu ... Grüße
bastla
@bastla
Mein Ansatz "geht" auch nur
Zig mal CALL und FINDSTR hinterlassen ihre Spuren, was die Laufzeit solcher Scripts angeht.
Grüße
rubberman
Mein Ansatz "geht" auch nur
Zig mal CALL und FINDSTR hinterlassen ihre Spuren, was die Laufzeit solcher Scripts angeht.
Grüße
rubberman
Hallo manni04,
ja, einfach "%cd%" durch bspw. "c:\dein\verzeichnis" ersetzen, sollte funktionieren.
Grüße
rubberman
<edit: @bastla Völlig d'accord \>
ja, einfach "%cd%" durch bspw. "c:\dein\verzeichnis" ersetzen, sollte funktionieren.
Grüße
rubberman
<edit: @bastla Völlig d'accord \>
@rubberman
Zumindest "
- ist allerdings nicht so schön wie Deine Rekursion.
Der Pfad für die "Liste" muss übrigens immer vollständig angegeben werden ...
Grüße
bastla
Zumindest "
call
" ließe sich ja vermeiden (ungetestet):@echo off & setlocal
set "Ordner=W:\TEMP\"
set "Liste=D:\test.txt"
pushd "%Ordner%"
(for /f "tokens=1-3*" %%f in ('dir /a-d /-c /tc /4 2^>nul^|findstr /vbc:" "') do echo %%f§%%g§%%h§%Ordner%§%%i)>"%Liste%"
for /f "delims=" %%a in ('dir /s /b /ad') do (
pushd "%%a"
for /f "tokens=1-3*" %%f in ('dir /a-d /-c /tc /4 2^>nul^|findstr /vbc:" "') do echo %%f§%%g§%%h§%%~a§%%i
popd
)>>"%Liste%"
popd
Der Pfad für die "Liste" muss übrigens immer vollständig angegeben werden ...
Grüße
bastla
@bastla
Die Idee ist gut, du erwischt aber irgendwie nicht die gesamte Tiefe der Verzeichnisstruktur.
Im Test:
4704 Dateien bei meinem Script
2352 Dateien bei deinem Script
Grüße
rubberman
Die Idee ist gut, du erwischt aber irgendwie nicht die gesamte Tiefe der Verzeichnisstruktur.
Im Test:
4704 Dateien bei meinem Script
2352 Dateien bei deinem Script
Grüße
rubberman
@rubberman
Könnte daran liegen, dass bei mir die Liste bei jedem Durchlauf neu erstellt wird ...
Grüße
bastla
Könnte daran liegen, dass bei mir die Liste bei jedem Durchlauf neu erstellt wird ...
Grüße
bastla
@bastla
Vollkommen richtig. Nachdem ich die Datei vor dem Lauf gelöscht habe, spucken mir beide Scripts auch die gleiche Anzahl Dateien aus. Brett vorm Kopf -- ich glaube ich geh erst mal 'ne Stunde schlafen
Grüße
rubberman
Vollkommen richtig. Nachdem ich die Datei vor dem Lauf gelöscht habe, spucken mir beide Scripts auch die gleiche Anzahl Dateien aus. Brett vorm Kopf -- ich glaube ich geh erst mal 'ne Stunde schlafen
Grüße
rubberman
Hallo manni04!
Welche weiteren Parameter sollten das den sein? %%f bis %%i entsprechen einfach den 4 (oder genauer 3 + 1 für den dann noch folgenden Rest) Teilen ("tokens") in welche die "
anhand des (Default-)Trennzeichens "Leerzeichen" zerlegt wird ...
Grüße
bastla
Welche weiteren Parameter sollten das den sein? %%f bis %%i entsprechen einfach den 4 (oder genauer 3 + 1 für den dann noch folgenden Rest) Teilen ("tokens") in welche die "
dir
"-Zeile, zB02.10.2011 12:30 86.376 Nur als Test.txt
... die Parameter in der Batch-Hilfe vom Befehl FOR gefunden, diese funktionieren da ja aber nicht mehr
Das ist so nicht ganz richtig - wenn sich eine Schleifen- oder Parameter- (wie zB %1) Variable auf eine konkrete Datei bezieht, kannst Du sehr wohl (innerhalb der Schleife oder im aufgerufenen Unterprogramm) noch zB "%%~za
" oder etwa "%~dp1
" verwenden.Grüße
bastla
Hallo manni04!
... "ähnliches" ist mir aber zu nebulos ...
Grüße
bastla
Dachte nur das man da z.B. noch das Änderungsdatum oder ähnliches dazu ausgeben könnte.
Mit "Änderungsdatum" kann ich etwas anfangen - bei meinem letzten Vorschlag wäre das zB "%%~ti
" (da vorher in den betrachteten Ordner "%%a" gewechselt wurde, genügt der Dateiname in "%%i" als Bezug auf die Datei) ...... "ähnliches" ist mir aber zu nebulos ...
Grüße
bastla