Per Batch Datum in anderem Format an Dateinamen anfügen

DamnedFreak

Otaku :)
Thread Starter
Mitglied seit
04.02.2009
Beiträge
2.797
Ort
Hannover
Guten Morgen,

eventuell kann mir hier ja jemand weiterhelfen. Und zwar habe ich folgendes Problem:

Ich habe in einem bestimmten Ordner immer 3 gleich benannte Dateien (ApShell.abf/RL_Kons_VER_VL.abf/RLPV_Produktvorhaben.abf im Ordner G:\Backups). Dieses sind Analysis Services Backups, welche jede Nacht geschrieben werden. Um nun mehrere Generationen gleichzeitig im Laufwerk haben zu können, möchte ich an den Backupjob nun einen weiteren Step anhängen (in Form eines cmd-files), welcher die 3 Dateien umbenennt und das aktuelle Datum (im Format 2012_08_27_013757 oder ohne Unterstriche, ist eig. egal) anfügt. Problem hierbei ist, dass die Systemzeit englisch ist, sprich ein %date% 08/29/2012 zurückgibt.

Bisher habe ich folgendes zusammensuchen können (am Beispiel eines Backups):

Code:
@echo off
for /f "tokens=*" %%a in (
'dir /b G:\Backups\OLAP\Apshell.abf'
) do call :rename "%%a"
goto :EOF
:rename
set timestamp=%date%
set oldname=%~1
set newname=%oldname%_%timestamp%.abf
echo ren "G:\Backups\OLAP\%oldname%" "%newname%"
pause

Was folgendes zurückgibt:

Code:
ren "G:\Backups\OLAP\ApShell.abf" "ApShell.abf_Wed 08/29/2012.abf"
Press any key to continue . . .

Entspricht leider nicht wirklich dem, was ich haben will. Leider bin ich nun aber komplett überfragt, wie ich das Problem lösen kann (um auch das .abf mittendrin zu entfernen), da die Suche per Google mich nicht mehr weiterbringt.

Vielen Dank schonmal im voraus!!

---------- Post added at 12:21 ---------- Previous post was at 09:13 ----------

zu 95% gelöst nun...

Code:
@echo off
for /f "tokens=1-4 delims=/ " %%a in ("%date%") do set "WoTag=%%a" & set "Mon=%%b" & set "Tag=%%c" & set "Jahr=%%d"
for /f "tokens=*" %%a in ('dir /b G:\Backups\OLAP\ApShell.abf,G:\Backups\OLAP\RL_Kons_VER_VL.abf,G:\Backups\OLAP\RLPV_Produktvorhaben.abf') do call :rename "%%a"
goto :EOF
:rename
set oldname=%~n1
set newname=%oldname%_%Jahr%%Mon%%Tag%.abf
ren "G:\Backups\OLAP\%oldname%" "%newname%"

müsste den Timestamp nun nur noch um Std+Min erweitern, aber das ist eig nur noch ne Kleinigkeit... :)
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
ich nutz immer folgenden code um auf Systemen mit unterschiedlicher sprachen, immer das gleiche aktuelle datum format zu bekommen.
der befehl type wird genutzt, weil die ausgabe des wmic befehls (aktuellesdatum.txt), aus irgendeinen grund nicht immer fehlerfrei mit der forschleife verarbeitet werden kann.

Code:
@echo off
wmic path win32_localtime get dayofweek,day,month,year,hour,minute,second>"aktuellesdatum.txt"
for /f "skip=1 tokens=1,2,3,4,5,6,7" %%a in ('type "aktuellesdatum.txt"') do set tag=%%a&set wochentag=%%b&set stunde=%%c&set minute=%%d&set monat=%%e&set sekunde=%%f& set jahr=%%g

if %wochentag% == 1 set wochentag=Mo
if %wochentag% == 2 set wochentag=Di
if %wochentag% == 3 set wochentag=Mi
if %wochentag% == 4 set wochentag=Do
if %wochentag% == 5 set wochentag=Fr
if %wochentag% == 6 set wochentag=Sa
if %wochentag% == 0 set wochentag=So

if %tag% lss 10 set tag=0%tag%
if %monat% lss 10 set monat=0%monat%
if %stunde% lss 10 set stunde=0%stunde%
if %minute% lss 10 set minute=0%minute%
if %sekunde% lss 10 set sekunde=0%sekunde%

del aktuellesdatum.txt
echo %jahr% %monat% %tag% %stunde% %minute% %sekunde% %wochentag%
pause>nul
 
Zuletzt bearbeitet:
Vielen Dank 10101010!

Mit Deinem Code konnte ich nun das verwirklichen, was ich brauchte! :)

Code:
@echo off
wmic path win32_localtime get dayofweek,day,month,year,hour,minute,second>"aktuellesdatum.txt"
for /f "skip=1 tokens=1,2,3,4,5,6,7" %%a in ('type "aktuellesdatum.txt"') do set tag=%%a&set wochentag=%%b&set stunde=%%c&set minute=%%d&set monat=%%e& set jahr=%%g

if %tag% lss 10 set tag=0%tag%
if %monat% lss 10 set monat=0%monat%
if %jahr% lss 10 set jahr=0%jahr%
if %stunde% lss 10 set stunde=0%stunde%
if %minute% lss 10 set minute=0%minute%
 
for /f "tokens=*" %%a in ( 'dir /b G:\Backups\OLAP\ApShell.abf,G:\Backups\OLAP\RL_Kons_VER_VL.abf,G:\Backups\OLAP\RLPV_Produktvorhaben.abf' ) do call :rename "%%a"
goto :EOF 
:rename 
set oldname=%~n1
set newname=%oldname%_%jahr%%monat%%tag%%stunde%%minute%.abf
ren "G:\Backups\OLAP\%oldname%".abf "%newname%"
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh