selensilence
Goto Top

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.
@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
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

Content-ID: 69559

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

Ausgedruckt am: 20.11.2024 um 13:11 Uhr

bastla
bastla 26.09.2007 um 18:09:11 Uhr
Goto Top
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:
@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
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
SelenSilence
SelenSilence 30.09.2007 um 15:02:24 Uhr
Goto Top
Hallo,

nun schaff ich es auch endlich dir zu schreiben. Erstmal danke für die nette Begrüßung face-smile
Also die .bat Dtei funktioniert SUPER, war genau das was ich noch brauchte.
Sehr sehr vielen Dank!!!!

Wünsche noch einen schonen Sonntag
Grüße
SelenSilence