130834
Goto Top

Datei-Endungen, Listen und Sortierung (Batch)

Hallo Leute,

Ich habe ein kompliziertes ( so wie eigentlich immer, und kompliziert natürlich subjektiv ) Effizienz-Problem.

Ich versuch gerade eine Liste mit Dateien welche eine bestimmte Datei-Endung haben,
sortiert nach ihrem Erstell-Datum mit der ältesten als erstes, auszugeben.

Also, Dateien, nur die die Bestimmte Datei-Endungen haben, Nach ihrem Erstell-Datum sortiert, mit der ältesten zuerst, in eine Datei ausgeben.
Und dabei die Dateien welche die Endung haben auch noch zählen.
Und das nur bei Dateien in EINEM bestimmten Ordner, ohne Unterordner.
Die Liste wird dann weiterverarbeitet, mit einem kompliziert aussehenden ( objektiv ) Namens-Datums-Gebungs-Dings-Sortierungs-Algorithmus.

Das bisherige Gewirr an Befehlen das ich habe geht über das was man ineffizient nennen könnte hinaus.

Es sieht genau so aus;

!CR! ist ein Carriage Return Charakter
Es gibt noch keinen Mechanismus um die Dateien zu zählen, momentan werden ALLE gezählt, denn ich wollte das ganze nicht NOCH langsamer machen.


for /f "delims=" %%i in ('dir /b /a-d /tc /od') do set /a "FND=!FND!+1"&<nul set /P "=Files loaded: !FND!!CR!"&for /f "tokens=1-2" %%a in ('dir /tc "%%~i"^|findstr "%%~i"') do >>"%list%" echo %%a %%b %%i  
findstr /i ".png .jpg .tif .jpeg .exif .gif .bmp" "%list%"> "%list2%"  
>nul erase /F /Q "%list%"  

hat jemand eine Idee wie man das schneller / besser / Effizienter machen könnte?

Die nachfolgende Verarbeitung sieht ( rein für Informations- und Verständnis-Zwecke ) in etwa so aus;

Die Liste enthält momentan DATUM ZEIT DATEI, weshalb ich den Dritten Token nehme.
:number füllt CUR nach vorne bis zu 4 Zeichen mit Nullen auf ( also z.b. CUR = 3 der return von number ist dann 0003 )


for /f "tokens=1-3* delims= " %%a in (%list2%) do (  
set /a "CUR=!CUR!+1"  
call :number
rename "%cd%\%%c" "!nam!_!num!.*"  
)

schönen Abend noch

lg clragon

Content-Key: 328041

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

Printed on: April 23, 2024 at 14:04 o'clock

Mitglied: 132272
132272 Feb 01, 2017, updated at Feb 21, 2017 at 06:54:36 (UTC)
Goto Top
So ein Aufwand für nüscht face-smile PS:
$cnt = 0
gci "c:\Daten\*" -Include *.png,*.jpg,*.tif,*.jpeg,*.exif,*.gif,*.bmp | sort LastWriteTime | %{rename-item $_.Fullname -NewName "$($_.Basename)_$($cnt.toString().padLeft(4,'0'))$($_.Extension)"; $cnt++}  
Gruß
Mitglied: 130834
130834 Feb 01, 2017 at 12:04:09 (UTC)
Goto Top
Wenn ich nur wüsste was das ist....?
Mitglied: 132272
132272 Feb 01, 2017 updated at 16:54:29 (UTC)
Goto Top
Zitat von @130834:
Wenn ich nur wüsste was das ist....?
Der war gut face-big-smile.
Mitglied: 130834
130834 Feb 01, 2017 at 17:07:46 (UTC)
Goto Top
Ich weiß :P

Ich würde die Skripte aber lieber ohne PS schreiben, weil
1. Mir PS zu kompliziert ist
2. Mir PS zu lange zum starten braucht
3. Es unnötig ist eine Lang andauernde Funktion welche ich verstehe mit einer Lang andauernden Funktion welche ich nicht verstehe zu ersetzten.
4. Der Rest meines Skripts in Batch ist

Wenn ich PS könnte würde ich das ganze Skript in PS schreiben...
Mitglied: 130834
130834 Feb 20, 2017 at 20:46:43 (UTC)
Goto Top
Thread ohne Antwort geschlossen.

lg clragon