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-Key: 69559

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

Printed on: April 26, 2024 at 08:04 o'clock

Member: bastla
bastla Sep 26, 2007 at 16:09:11 (UTC)
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
Member: SelenSilence
SelenSilence Sep 30, 2007 at 13:02:24 (UTC)
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