114298
Goto Top

BATCH - Dateiname und Erstelldatum auslesen

Hallo zusammen,

ich habe folgendes Problem, vielleicht kann mir einer ja weiterhelfenface-smile

Ich möchte die Dateinamen und das Erstellungsdatum aller Dateien im einem Verzeichnis in eine csv datei auslesen.

Mit
dir *Verzeichnis* /b /a-d > *Verzeichnis*

schaffe ich es alle Dateien aufzulisten und mit

for %%f in ("Verzeichnis") do echo %%f: %%~tf > *Verzeichnis

schaffe ich es das Datum und die Uhrzeit von EINER Datei auszulesen allerdings wird hier der Pfad mit ausgegeben was auch nicht sein soll.

Wie schaffe ich es diese beiden zu kombinieren??

Gruß Memo

Content-Key: 223552

Url: https://administrator.de/contentid/223552

Printed on: April 19, 2024 at 10:04 o'clock

Member: colinardo
colinardo Dec 03, 2013 updated at 16:24:25 (UTC)
Goto Top
Hallo Memo,
REM Codepage ändern damit Umlaute in Dateinamen korrekt übertragen werden
chcp 1252

for %%a IN ("C:\Verzeichnis\*.*") do @echo "%%~nxa";"%%~ta">>CSVDatei.csv  

REM Codepage auf Defaultwert setzen
chcp 850
soll das Verzeichnis und alle Unterverzeichnisse rekursiv durchlaufen werden kannst du dies so machen:
for /R "C:\Verzeichnis" %%a IN (1) do @(for %%b in ("%%~dpa*") DO @(echo "%%~nxb";"%%~tb">>CSVDatei.csv))
Grüße Uwe
Member: Endoro
Endoro Dec 04, 2013 updated at 05:41:19 (UTC)
Goto Top
Hey, wenn du das Erstelldatum brauchst, sollte wmic verwendet werden, was leider recht langsam ist und bei XP Home erst installiert werden muss (ist ab XP Prof "serienmässig"). Andere hinreichend stabile Methoden hab ich noch nicht gefunden.
@ECHO OFF &SETLOCAL
cd /d "%userprofile%"  
for /f "tokens=2delims=:" %%a in ('chcp') do set /a mychcp=%%a 2>nul  
chcp 1252 >nul
(for /f "delims=" %%a in ('dir /b /a-d') do call:process "%%~fa")>filelist.csv  
chcp %mychcp% >nul
type filelist.csv
goto:eof

:process
setlocal
set "fname=%~1"  
for /f "tokens=2delims=," %%b in ('wmic path cim_datafile where name^="%fname:\=\\%" get creationdate /format:csv^|find "."') do set "crd=%%b"  
echo("%~nx1","%crd:~6,2%.%crd:~4,2%.%crd:~0,4% %crd:~8,2%:%crd:~10,2%:%crd:~12,2%,%crd:~15,4%"  
exit /b
lg.
Mitglied: 114298
114298 Dec 04, 2013 updated at 08:02:09 (UTC)
Goto Top
Hallo Uwe,

vielen lieben Dank erstmal face-smile

Allerdings wird das Änderungsdatum ausgegeben und nicht das Erstellungsdatum. Ich könnte Wetten, dass das %%~ta geändert werden muss. Haben bisschen experimentiert aber dann wurde gar kein Datum ausgegeben.face-smile

@Endoro
das ganze muss ohne zusätzliche Installationen laufen. Aber danke dir auch, vielleicht brauch ich es an einer anderen Stelle face-smile

Beste Grüße
Memo
Member: colinardo
colinardo Dec 04, 2013 at 08:05:29 (UTC)
Goto Top
Zitat von @114298:
Allerdings wird das Änderungsdatum ausgegeben und nicht das Erstellungsdatum. Ich könnte Wetten, dass das %%~ta
geändert werden muss.
Ah sorry das hatte ich übersehen, dann musst du es anders machen z.B. so wie Endoro schreibt, die verfügbaren Parameter dafür kannst du dir mit for /? anzeigen lassen:
Oder am besten gleich ganz zur Powershell wechseln, dann hast du dieses gehöddel nicht ...
Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
Sie können jetzt folgende Syntax verwenden:

    %~I         - Expandiert %I und entfernt alle umschließenden
                   Anführungszeichen (").
    %~fI        - Expandiert %I zu einem vollständigen Dateinamen.
    %~dI        - erstellt nur den Laufwerkbuchstaben von %I.
    %~pI        - erstellt nur den Pfad von %I.
    %~nI        - erstellt nur den Dateinamen von %I.
    %~xI        - erstellt nur die Dateierweiterung von %I.
    %~sI        - erstellter Pfad enthält nur kurze Dateinamen.
    %~aI        - erstellt die Dateiattribute von %I.
    %~tI        - erstellt Datum und Zeit von %I.
    %~zI        - erstellt die Dateigröße von %I.
    %~$PATH:I   - Durchsucht die in der PATH-Umgebungsvariablen
                   angegebenen Verzeichnisse und expandiert die erste
                   gefundene Datei %I zu dem vollständigen Dateinamen.
                   Wenn der Name der Umgebungsvariablen nicht definiert
                   ist oder diese Datei bei der Suche nicht gefunden wurde,
                   wird dieser Parameter zu einer leeren Zeichenfolge
                   expandiert.

Diese Parameter können auch miteinander kombiniert werden:

    %~dpI       - erstellt den Laufwerkbuchstaben und Pfad von %I.
    %~nxI       - erstellt den Dateinamen und die Dateierweiterung von %I.
    %~fsI       - Expandiert %I zu einem vollständigen Namen, der nur
                   kurze Dateinamen enthält.
    %~dp$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen
                   angegebenen Verzeichnisse nach %I und erstellt den
                   Laufwerkbuchstaben und Pfad der ersten gefundenen Datei.
    %~ftzaI     - Expandiert %I zu einer Zeile, die der Ausgabe des DIR-
                   Befehls entspricht.
Grüße Uwe
Mitglied: 114298
114298 Dec 04, 2013 at 08:10:59 (UTC)
Goto Top
Das bringt mich um einiges weiter.

Ich danke dir vielmals, du bist mein Held :P ;)

Gruß Memo