aiwa002
Goto Top

Batchdatei - Bei copy Befehl im Dateinamen das Datum aus Vortag anhängen

Wir müssen über den copy Befehl eine Datei mit dem Vortag benennen.
Die Datumsangabe muss im folgenden Format bereitsgestellt sein: Dateiname_20081117.csv

Folgendes habe ich bereits gefunden und funktioniert auch soweit:

@echo off
@del %temp%\gestern.vbs
@echo wscript.echo dateAdd("d",-1, date())>%temp%\gestern.vbs
@for /F %%i in ('cscript //nologo %temp%\gestern.vbs') do @set "yesterdate=%%i"

Problem ist aber das in der Variablen %yesterdate% das folgende Format angezeigt wird: 17/11/2008

Damit ich dies jetzt verwenden kann müsste ich die Variable auslesen können.

Leider weiß ich nicht wie ich das machen soll, daher hoffe ich dass mir hier jemand weiterhelfen kann!

Gruß
Steffen

Content-Key: 102098

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

Printed on: April 25, 2024 at 09:04 o'clock

Member: aiwa002
aiwa002 Nov 18, 2008 at 15:26:05 (UTC)
Goto Top
set jahr=%date:~-4%
set monat=%date:~-10,2%
set tag=1000%date:~-7,2%
set /a vormonat=%monat%-1

if not %tag%==100001 set /a tag=%tag%-1 & goto punktzwei

for %%j in (77700 77701 77703 77705 77707 77708 77710) do if %vormonat%==%%j set /a tag=100031 & goto punkteins
for %%k in (77704 77706 77709 77711) do if %vormonat%==%%k set /a tag=100030 & goto punkteins

set /a tag=100028
for %%l in (2008 2012 2016 2020 2024) do IF %jahr%==%%l set /a tag=100029

:punkteins
if not %monat%==77701 set /a monat=%monat%-1 & goto punktzwei
set /a monat=77712
set /a jahr=%jahr%-1

:punktzwei
set tag=%tag:~-2,2%
set monat=%monat:~-3,2%

echo %tag%
echo %monat%
echo %jahr%
echo %date%
Member: Biber
Biber Nov 18, 2008 at 15:39:29 (UTC)
Goto Top
Moin alwa002,

das einfachste wäre sicherlich, das Systemdatumsformat auf das "deutsche" Datumsformat zu setzen.
Geht das oder ist das ein (englischsprachiger) Server, auf dem Du keine Rechte hast bzw. keine Seiteneffekte auslösen möchtest?

Zweite Alternative, die allerdings den Umfang des temporären VBS-Schnipsels ins schier Unermessliche wachsen lassen würde, wäre
...
echo d=dateAdd("d",-1, date())>%temp%\gestern.vbs  
echo wscript.echo datepart("d",d) ^& datepart("m",d) ^&datepart("yyyy",d)>>%temp%\gestern.vbs  
echo wscript.echo datepart("d",d) ^&"."^& datepart("m",d) ^&"."^&datepart("yyyy",d)>>%temp%\gestern.vbs  
...(Aufruf des Schnipsels.
D.h. Du würdest das Datum aus Tag+"."+Monat + "." +Jahr selber zusammenbraten.
Ausgabe wäre dann
17.11.2008
..und möglicherweise müsstest Du noch für Tage/Monate < 10 eine führende "0" ergänzen.

aber Variante 1 (Systemdatumsformat auf "deutsch" setzen) wäre sinnvoller.

Grüße
Biber
Member: aiwa002
aiwa002 Nov 18, 2008 at 15:43:48 (UTC)
Goto Top
Ich hab ja jetzt zum Glück das bereits oben angegebene Script gefunden, wo auch das Problem mit den Nullen bereits gelöst ist!

Aber da bin ich nicht wirklich drauf gekommen das mein Problem am englischen Datum liegt.

Dank dir!

Gruß
Steffen
Member: Biber
Biber Nov 18, 2008 at 16:06:05 (UTC)
Goto Top
Moin aiwa002,

obwohl.... ein bisschen blöd hab ich mich ja eben auch angestellt.
Es ist ja auch im Bätch kein Problem, die "/" in der Variablen auf "." zuändern oder auch gleich das Datum in der Form "20081117" zu formatieren.
Hilfreich wäre ja nur zu wissen, in welcher Reihenfolge der Datumswert zurückkommt (in Reihenfolge tt.mm.jjjj oder mm.tt.jjjj oder jj.mm.tt)

Wenn Du aber Punkte und/oder Schrägstriche gleichermaßen durch "nichts" ersetzen willst:
set mydate=17/11/2008
echo %mydate:/=%
17112008

Grüße
Biber
Member: aiwa002
aiwa002 Nov 18, 2008 at 16:08:41 (UTC)
Goto Top
Hallo Biber,

das Datumsformat wäre 20081117
(JahrMonatTag)

Gruß
Steffen
Member: Biber
Biber Nov 18, 2008 at 16:33:20 (UTC)
Goto Top
Moin aiwa002,

okay, das wäre dann so eine Mimik:
::testschnpsel.bat
@echo off & setlocal
REM so kommt ja Datum zurück ...oder meinetwegen auch so: 17.11.2008
set "mydate=17/11/2008"  
for /f "delims=./ tokens=1-3" %%i in ("%mydate%") do set "myANSIdate=%%k%%j%%i"  
REM myANSIdate hat jetzt das Format YYYYMMDD = 20081117
echo myANSIdate: [%myANSIdate%]
Breitgetreten wird das Ganze übrigens im Tutorial "Workshop Batch for Runaways III" unten unter Anleitungen.

Grüße
Biber