Batch zur Ausgabe von Erstelldatum und Dateinamen mit Pfad
Hallo und guten Tag,
ich habe wiedermal eine Herausforderung die ich alleine nicht lösen kann.
Diverse Ansätze habe ich im Netz und im Forum gefunden.
Leider lösen alle samt meine Aufgabe nur zum Teil.
Ich möchte eine Datei schreiben die mir alle Pfade durchsucht und die Dateien mit Pfadangaben und dem Erstelldatum in eine z.B. CSV-Datei schreibt.
Die Schwierigkeit liegt jetzt darin, das einige Dateien im n-ten Unterverzeichnis liegen und ggf. dann noch einen langen Dateinamen haben.
Somit kommt wohl die Batch an die Windowsgrenzen von maximal 260 erlaubten Zeichen.
D. h. der Dateiname oder das Datum wird dann nicht mehr ausgegeben.
Z. B. Dateipfad mit Datei
D:\Test\11111111111111111111111111111111111111111111111111111111111111111111111 - Kopie\12345678\33333\4444\555555\6666\7777777\8888888\9999\aaaaa\bbbbbbb\ccccccccc\dddddddddd\eeeeeeeeeeeeeee\fffffffffffffffffffffff\gggggggggggggg\hhhhhhhhhhhhhhhhhhh\4444\1212121212121212121212.txt
Gewünschte Ausgabe
15.05.2020 D:\Test\11111111111111111111111111111111111111111111111111111111111111111111111 - Kopie\12345678\33333\4444\555555\6666\7777777\8888888\9999\aaaaa\bbbbbbb\ccccccccc\dddddddddd\eeeeeeeeeeeeeee\fffffffffffffffffffffff\gggggggggggggg\hhhhhhhhhhhhhhhhhhh\4444\1212121212121212121212.txt
Wäre Klasse wenn sich dem mal jemand annehmen könnte.
Gruß Nohouse
ich habe wiedermal eine Herausforderung die ich alleine nicht lösen kann.
Diverse Ansätze habe ich im Netz und im Forum gefunden.
Leider lösen alle samt meine Aufgabe nur zum Teil.
Ich möchte eine Datei schreiben die mir alle Pfade durchsucht und die Dateien mit Pfadangaben und dem Erstelldatum in eine z.B. CSV-Datei schreibt.
Die Schwierigkeit liegt jetzt darin, das einige Dateien im n-ten Unterverzeichnis liegen und ggf. dann noch einen langen Dateinamen haben.
Somit kommt wohl die Batch an die Windowsgrenzen von maximal 260 erlaubten Zeichen.
D. h. der Dateiname oder das Datum wird dann nicht mehr ausgegeben.
Z. B. Dateipfad mit Datei
D:\Test\11111111111111111111111111111111111111111111111111111111111111111111111 - Kopie\12345678\33333\4444\555555\6666\7777777\8888888\9999\aaaaa\bbbbbbb\ccccccccc\dddddddddd\eeeeeeeeeeeeeee\fffffffffffffffffffffff\gggggggggggggg\hhhhhhhhhhhhhhhhhhh\4444\1212121212121212121212.txt
Gewünschte Ausgabe
15.05.2020 D:\Test\11111111111111111111111111111111111111111111111111111111111111111111111 - Kopie\12345678\33333\4444\555555\6666\7777777\8888888\9999\aaaaa\bbbbbbb\ccccccccc\dddddddddd\eeeeeeeeeeeeeee\fffffffffffffffffffffff\gggggggggggggg\hhhhhhhhhhhhhhhhhhh\4444\1212121212121212121212.txt
Wäre Klasse wenn sich dem mal jemand annehmen könnte.
Gruß Nohouse
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 661663
Url: https://administrator.de/contentid/661663
Ausgedruckt am: 20.11.2024 um 05:11 Uhr
11 Kommentare
Neuester Kommentar
Moin,
Gruß Thomas
Zitat von @Nohouse303:
Die Schwierigkeit liegt jetzt darin, das einige Dateien im n-ten Unterverzeichnis liegen und ggf. dann noch einen langen Dateinamen haben.
Somit kommt wohl die Batch an die Windowsgrenzen von maximal 260 erlaubten Zeichen.
In dem Fall mit Batch dann kaum noch lösbar --> PowershellDie Schwierigkeit liegt jetzt darin, das einige Dateien im n-ten Unterverzeichnis liegen und ggf. dann noch einen langen Dateinamen haben.
Somit kommt wohl die Batch an die Windowsgrenzen von maximal 260 erlaubten Zeichen.
$Pfad = 'C:\Test'
Get-Childitem -Recurse -File $Pfad | Select CreationTime,Fullname | Export-CSV -NoTypeInformation -delimiter ' ' -Enc utf8 "C:\Dateien.csv"
Gruß Thomas
Aber nur wenn man das in Windows 10 vorher auch freischaltet sonst scheitert die PS auch an den langen Pfaden
.NET hatte es ja bekanntlich lange auch nicht so mit langen Pfaden...
.NET hatte es ja bekanntlich lange auch nicht so mit langen Pfaden...
New-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name LongPathsEnabled -Value 1 -PropertyType DWORD -Force
Zitat von @Nohouse303:
Funktioniert bei mir auf zwei verschiedenen W10 Clients auch wenn der LongPathsEnabled auf 0 ist.
Wohl inzwischen Standard auch ohne Key. MS ändert ja gerne mal was ...Funktioniert bei mir auf zwei verschiedenen W10 Clients auch wenn der LongPathsEnabled auf 0 ist.
Schöner wäre noch das Ganze ohne Uhrzeit und in zwei Spalten in der CSV-Datei. Geht das?
Jeppls 'D:\Ordner' -File -Recurse | select @{n='CreationDate';e={$_.CreationTime.toString('g')}},FullName | export-csv 'D:\export.csv' -Delimiter ";" -NoType -Encoding UTF8
Zitat von @Nohouse303:
PS ist zwar gar nicht so meins aber Thomas Schnipsel funktioniert klasse da keine Leerverzeichnisse ausgegeben werden.
Vielmehr werden überhaupt keine Verzeichnisse ausgegeben (ist also equivalent zu dir /s /b /a-d in cmd), schließlich hast du ja nur von Dateien gesprochen.PS ist zwar gar nicht so meins aber Thomas Schnipsel funktioniert klasse da keine Leerverzeichnisse ausgegeben werden.
Schöner wäre noch das Ganze ohne Uhrzeit und in zwei Spalten in der CSV-Datei. Geht das?
Klar geht das. Das mit den 2 Zeilen hängt aber vom verwendeten Office ab. Excel trennt Csv-Dateien z.B. standardmäßig bei Semikolon, daher müsste bei Export-CSV dann -delimiter ';' hin.Zitat von @147669:
Nicht ganz, so gibt er ja die Uhrzeit immer noch mit aus (nur halt als Mitternacht). ls 'D:\Ordner' -File -Recurse | select @{n='CreationDate';e={$_.CreationTime.Date}},FullName | export-csv 'D:\export.csv' -Delimiter ";" -NoType -Encoding UTF8
ls 'D:\Ordner' -File -Recurse | select @{n='CreationDate';e={$_.CreationTime.ToString('dd.MM.yyyy')}},FullName | export-csv 'D:\export.csv' -Delimiter ";" -NoType -Encoding UTF8
Zitat von @Nohouse303:
Halllo,
ich muss leider nochmal nachfassen.
Wie muss ich den Code verändern/erweitern wenn ich nachfolgende Dateileichen auch mit listen will/muss.
~$blabla.pptm
~$blub.xlsm
Danke und Gruss
Torsten
Du musst in dem Fall noch ein -Force an Get-Childitem anhängen da das in der Regel "versteckte" Dateien sind und diese nur gelistet werden wenn man -Force als Parameter setzt. Der Rest bleibt gleich und habe ich hier weg gelassen.Halllo,
ich muss leider nochmal nachfassen.
Wie muss ich den Code verändern/erweitern wenn ich nachfolgende Dateileichen auch mit listen will/muss.
~$blabla.pptm
~$blub.xlsm
Danke und Gruss
Torsten
ls 'D:\Ordner' -File -Recurse -Force | ..............