Per Batch - Datum als Dateiname
Hallo,
ich bin am verzweifeln. Irgendwie schaff ich es einfach nicht das Erstelldatum als Dateinamen zu setzen und dann diese umbenannte Datei zu verschieben.
Hier hatte ich folgenden Beitrag gefunden -> Erstellungsdatum auslesen und als neuen Dateinamen verwenden
Ich hab da auch nicht soo die Ahnung von, aber egal wie ich es versuche es will einfach nicht klappen.
Hiermit verschiebt er schonmal.
Zudem brauche ich das ja ursprünglich, dass er den Dateinamen ändert und nicht einfach "nur" einen neuen mit dem Datum Ordner anlegt.
Also im Grunde aus d:123la.txt -> d:1234562005-09-12_12.11.txt wird. (Stunden und Minuten soll ich auch noch dazu bekommen)
Bitte helft mir!
Gruß
Selen
ich bin am verzweifeln. Irgendwie schaff ich es einfach nicht das Erstelldatum als Dateinamen zu setzen und dann diese umbenannte Datei zu verschieben.
Hier hatte ich folgenden Beitrag gefunden -> Erstellungsdatum auslesen und als neuen Dateinamen verwenden
Ich hab da auch nicht soo die Ahnung von, aber egal wie ich es versuche es will einfach nicht klappen.
Hiermit verschiebt er schonmal.
@echo off & setlocal
pushd %2
for /F "delims=" %%f in ('dir /b /a-d %1 ^2^>nul') do if /i %%~sf NEQ %~s0 call :loop "%%f"
PopD & goto :eof
:loop
Datei: %1 Dateidatum: %~t1
REM MyDateTime im Format JJJJ-MM
for /f "tokens=2,3 delims=. " %%i in ("%~t1") do set MyDateTime=%%j-%%i
REM Dir JJJJ-MM erstellen
if not exist "%~dp1%MyDateTime%" echo (Debug) md "%~dp1%MyDateTime%"
REM Datei dorthin verschieben
move "%~f1" "%~dp1%MyDateTime%\%~nx1"
goto :eof
Also im Grunde aus d:123la.txt -> d:1234562005-09-12_12.11.txt wird. (Stunden und Minuten soll ich auch noch dazu bekommen)
Bitte helft mir!
Gruß
Selen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 69559
Url: https://administrator.de/contentid/69559
Ausgedruckt am: 20.11.2024 um 13:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo SelenSilence und willkommen im Forum!
Da Du keine näheren Angaben dazu machst, woher "456" kommen soll, nehme ich es einmal als konstant an:
Die jeweiligen "echo (Debug) "-Anweisungen sorgen dafür, dass die auszuführenden Befehle nur angezeigt werden - sobald Du diese Anweisungen entfernst, wird wirklich bei Bedarf das Verzeichnis erstellt bzw werden Dateien verschoben und dabei umbenannt.
Zu letzterem Vorgang noch ein Hinweis: Sollte im Zielverzeichnis bereits eine Datei mit dem selben Namen vorhanden sein (auch, wenn erst während des Ablaufs dieses Batches dorthin gelangt), wird die bereits vorhandene Datei kommentarlos überschrieben.
Eine weitere Anmerkung: Unter der Annahme, dass "456" konstant ist, wäre das Erstellen dieses Unterverzeichnisses sinnvoller Weise bereits vor der Schleife angebracht, ich belasse es aber (vorläufig) in der Schleife. Falls das Verzeichnis "456" noch nicht vorhanden ist, wird (bei noch vorhandenem "echo (Debug) ") außerdem das Erstellen für jede einzelne Datei angezeigt (da ja der Vorgang nur simuliert wird und es daher weiterhin nicht existiert) - im "Ernstfall" würde es nur einmal erstellt werden.
Grüße
bastla
Da Du keine näheren Angaben dazu machst, woher "456" kommen soll, nehme ich es einmal als konstant an:
@echo off & setlocal
pushd %2
set "UV=456"
for /F "delims=" %%f in ('dir /b /a-d %1 ^2^>nul') do if /i %%~sf NEQ %~s0 call :loop "%%f"
PopD
goto :eof
:loop
::Datei: %1 Dateidatum: %~t1
::MyDateTime im Format JJJJ-MM-TT_hh.mm
for /f "tokens=1-5 delims=.: " %%i in ("%~t1") do set MyDateTime=%%k-%%j-%%i_%%l.%%m
::Dir %UV% (="456") erstellen
if not exist "%~dp1%UV%" echo (Debug) md "%~dp1%UV%"
::Datei dorthin verschieben
echo (Debug) move "%~f1" "%~dp1%UV%\%MyDateTime%%~x1"
goto :eof
Zu letzterem Vorgang noch ein Hinweis: Sollte im Zielverzeichnis bereits eine Datei mit dem selben Namen vorhanden sein (auch, wenn erst während des Ablaufs dieses Batches dorthin gelangt), wird die bereits vorhandene Datei kommentarlos überschrieben.
Eine weitere Anmerkung: Unter der Annahme, dass "456" konstant ist, wäre das Erstellen dieses Unterverzeichnisses sinnvoller Weise bereits vor der Schleife angebracht, ich belasse es aber (vorläufig) in der Schleife. Falls das Verzeichnis "456" noch nicht vorhanden ist, wird (bei noch vorhandenem "echo (Debug) ") außerdem das Erstellen für jede einzelne Datei angezeigt (da ja der Vorgang nur simuliert wird und es daher weiterhin nicht existiert) - im "Ernstfall" würde es nur einmal erstellt werden.
Grüße
bastla