Datei umbennenen mit Erstelldatum
Da ich in den änlichen Beiträgen keine Lösung gefunden habe frage ich hier.
Hallo zusammen.
Ich möchte gerne alle Dateien eines Ordners umbennenen, sodass vor den Namen das erstelldatum gesetzt wird.
Hab mir natürlich auch schon meine gedanken gemacht:
@pushd "%~1"
@for /f "tokens=1,2,3,*" %%a in ('dir *.* /a-d /-c /tc^|find "."') do set "erstdatum=%%a" & ren %%d %erstdatum:~6,4%_%erstdatum:~3,2%_%erstdatum:~0,2%_%%d
@popd
Nun würde ich gerne wissen ob ihr mir helfen könnt und warum mein skript nicht funktioniert.
Vielen Dank im Vorraus
Grüsse Turrex0100.
Hallo zusammen.
Ich möchte gerne alle Dateien eines Ordners umbennenen, sodass vor den Namen das erstelldatum gesetzt wird.
Hab mir natürlich auch schon meine gedanken gemacht:
@pushd "%~1"
@for /f "tokens=1,2,3,*" %%a in ('dir *.* /a-d /-c /tc^|find "."') do set "erstdatum=%%a" & ren %%d %erstdatum:~6,4%_%erstdatum:~3,2%_%erstdatum:~0,2%_%%d
@popd
Nun würde ich gerne wissen ob ihr mir helfen könnt und warum mein skript nicht funktioniert.
Vielen Dank im Vorraus
Grüsse Turrex0100.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 30.04.2010 um 10:38:35 Uhr
Datei umbennenen mit Erstelldatum
set /a rgc +=1666
Diese (An)zahl ist wirklich böse, böse, böse...
Ich möchte gerne alle Dateien eines Ordners umbennenen,...
set /a rgc +=1667
...aber geht auch schnell vorbei...
Zitat von @Turrex0100:
Giebt es eine Möglichkeit eine IF Abfrage einzubauen, damit schon umbennante dateien nicht nocheinmal umbennant werden??
set /a rgc +=2Giebt es eine Möglichkeit eine IF Abfrage einzubauen, damit schon umbennante dateien nicht nocheinmal umbennant werden??
669
Sauschnell sogar...
Content-ID: 141806
Url: https://administrator.de/contentid/141806
Ausgedruckt am: 16.11.2024 um 01:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo Turrex0100!
Unter Verwendung eines Unterprogrammes sollte es klappen (ungetestet):
Grüße
bastla
... warum mein skript nicht funktioniert.
Stichwort "DelayedExpansion" ...Unter Verwendung eines Unterprogrammes sollte es klappen (ungetestet):
@echo off & setlocal
pushD "%~1"
for /f "tokens=1,2,3,*" %%a in ('dir *.* /a-d /-c /tc^|find "."') do set "erstdatum=%%a" & call :ProcessFile "%%d"
PopD
goto :eof
:ProcessFile
ren %1 "%erstdatum:~6,4%_%erstdatum:~3,2%_%erstdatum:~0,2%_%~nx1"
goto :eof
bastla
@Snowman25
Soferne die Dateien nicht bereits vorher einen "_" im Dateinamen hatten, sollten sich die bereits umbenannten so ausfiltern lassen:
Grüße
bastla
Wozu?
Damit nicht bei jedem Durchlauf am Anfang des Dateinamens nochmals das Datum hinzugefügt wird?Soferne die Dateien nicht bereits vorher einen "_" im Dateinamen hatten, sollten sich die bereits umbenannten so ausfiltern lassen:
for /f "tokens=1,2,3,*" %%a in ('dir *.* /a-d /-c /tc^|find "."^|find /v "_"') do set "erstdatum=%%a" & call :ProcessFile "%%d"
bastla
Soferne die Dateien nicht bereits vorher einen "_" im Dateinamen hatten, sollten sich die bereits umbenannten so ausfiltern lassen
Oder man prüft ob das Datum schon da ist:
@echo off & setlocal
pushD "%~1"
for /f "tokens=1,2,3,*" %%a in (
'dir *.* /a-d /-c /tc^|find "."'
) do set "erstdatum=%%a" & call :ProcessFile "%%d"
PopD
goto :eof
:ProcessFile
Set "OldName=%~1"
Set "NewName=%erstdatum:~6,4%_%erstdatum:~3,2%_%erstdatum:~0,2%_%~nx1"
If "%OldName:~0,10%" EQU "%NewName:~0,10%" goto :Eof
ren %1 "%NewName%"
goto :eof
Gruß
LotPings
Zitat von @bastla:
Aufwändiger, aber natürlich genauer - wobei ich eher zu einem Ansatz der Art
gegriffen hätte ...
Naja Gott sei Dank sind die PCs meist so schnell , daß man nicht darüber debattieren muß ,Aufwändiger, aber natürlich genauer - wobei ich eher zu einem Ansatz der Art
echo %~nx1|findstr /b "%NewName%">nul && goto :eof
ob Aufwand an Zeichen den Aufwand an Zeit bei der Ausführung einer Sub-Shell durch die Pipe überwiegt
Zumindest hat die Verwendung von Old- und NewName einen didaktischen Nutzen (hoffe ich).
Gruß
LotPings
@77559
"Aufwändiger" hatte sich auf die Prüfung per Substring im Vergleich zum Aussortieren der Dateinamen mit "_" bezogen (mit letzterem lässt sich der Unterprogrammaufruf einsparen).
Die "
Grüße
bastla
"Aufwändiger" hatte sich auf die Prüfung per Substring im Vergleich zum Aussortieren der Dateinamen mit "_" bezogen (mit letzterem lässt sich der Unterprogrammaufruf einsparen).
Die "
findstr
"-Variante bevorzuge ich, weil ich damit nicht auf die Substring-Länge achten muss (obwohl zugegebener Maßen gerade in diesem Fall die Länge mit 10 Zeichen ja "konstant genug" sein sollte, um sie tatsächlich hardcoded zu hinterlegen) ...Grüße
bastla
Zitat von @bastla:
Damit nicht bei jedem Durchlauf am Anfang des Dateinamens nochmals das Datum hinzugefügt wird?
Huch, das hatte ich glatt übersehen. Dachte, die Dateien sollen nur das Erstellungsdatum als Namen haben.Damit nicht bei jedem Durchlauf am Anfang des Dateinamens nochmals das Datum hinzugefügt wird?
Grüße
bastla
bastla
Gruße
Snow