String in Dateinamen suchen und nach folgende Zeichen ersetzen
Hallo,
also die Ausgangslage, habe mehrere Dateien die wie folgt aufgebaut sind (Jeden Tag 3 neue Dateien):
"Datei 1 200904240757_11111111.txt"
"Datei 2 200904240758_22222222.txt"
"Datei 3 200904240759_33333333.txt"
Wie man sieht gibt es nach dem 2 Leerzeichen ein Zeitstempel mit den Format JJJJMMDD und dann die Uhrzeit an dem die Datei erstellt wurde im Format HHMM.
Jetzt zu mein Problem: Ich brauch eine Batch Datei die die Dateinamen wie folgt anpasst:
"Datei 1 200904240759_11111111.txt"
"Datei 2 200904240759_22222222.txt"
"Datei 3 200904240759_33333333.txt"
Also sozusagen bei der Uhrzeit die neuste Zeit aus den Dateinamen entnimmt und in den anderen 2 Dateien die Dateinamen dann die Uhrzeit sucht und mit der neusten Zeit ersetzt.
Hat einer eine Idee ?
MfG Michael
also die Ausgangslage, habe mehrere Dateien die wie folgt aufgebaut sind (Jeden Tag 3 neue Dateien):
"Datei 1 200904240757_11111111.txt"
"Datei 2 200904240758_22222222.txt"
"Datei 3 200904240759_33333333.txt"
Wie man sieht gibt es nach dem 2 Leerzeichen ein Zeitstempel mit den Format JJJJMMDD und dann die Uhrzeit an dem die Datei erstellt wurde im Format HHMM.
Jetzt zu mein Problem: Ich brauch eine Batch Datei die die Dateinamen wie folgt anpasst:
"Datei 1 200904240759_11111111.txt"
"Datei 2 200904240759_22222222.txt"
"Datei 3 200904240759_33333333.txt"
Also sozusagen bei der Uhrzeit die neuste Zeit aus den Dateinamen entnimmt und in den anderen 2 Dateien die Dateinamen dann die Uhrzeit sucht und mit der neusten Zeit ersetzt.
Hat einer eine Idee ?
MfG Michael
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 114739
Url: https://administrator.de/forum/string-in-dateinamen-suchen-und-nach-folgende-zeichen-ersetzen-114739.html
Ausgedruckt am: 23.12.2024 um 02:12 Uhr
4 Kommentare
Neuester Kommentar
Hallo MTB4ever!
Etwa so (wenn Aufbau und Länge der Namen konstant sind):
Wegen des "echo" in der Zeile 11 wird die Umbenennung nur angezeigt - wenn's ok aussieht, das "echo" einfach ersatzlos streichen.
Grüße
bastla
Etwa so (wenn Aufbau und Länge der Namen konstant sind):
@echo off & setlocal enabledelayedexpansion
set "Basis=D:\Dein Ordner"
set "Maske=Datei ? 20*.txt"
pushd "%Basis%"
for /f "delims=" %%i in ('dir /b "%Maske%"^|sort /+9') do set "Neueste=%%i"
set Zeit=%Neueste:~16,4%
for /f "delims=" %%i in ('dir /b "%Maske%"') do (
set "Name=%%i"
set "Name=!Name:~,16!%Zeit%!Name:~20!"
echo ren "%%i" "!Name!"
)
popd
Grüße
bastla
Hallo MTB4ever!
einzufügen und vor dem "popd" eine neue Zeile
zu platzieren.
Und (nur zur Sicherheit): Die Zeile 2 lautet dann natürlich
Schöner wäre es natürlich noch, auch für den zweiten Ordner eine Variable zu verwenden und in den obigen Zeilen einzusetzen ...
Grüße
bastla
Kann man die Batch so anpassen, dass das auch so funktioniert oder soll ich vorher Dateien immer erst in ein Ordner kopieren und dann wenn umbenannt wieder zurückschieben?
Die Anpassung ließe sich zwar machen, aber wäre vermutlich unnötiger Aufwand - aufgrund des konstanten Teiles des Dateinamens brauchst Du ja eigentlich nur zwischen den Zeilen 5 und 6move "C:\Temp\Ordner2\Datei 3 20*.txt"
move "Datei 3 20*.txt" "C:\Temp\Ordner2\"
Und (nur zur Sicherheit): Die Zeile 2 lautet dann natürlich
set "Basis=c:\temp\Ordner1"
Grüße
bastla