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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 102098
Url: https://administrator.de/contentid/102098
Ausgedruckt am: 26.11.2024 um 17:11 Uhr
6 Kommentare
Neuester Kommentar
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
D.h. Du würdest das Datum aus Tag+"."+Monat + "." +Jahr selber zusammenbraten.
Ausgabe wäre dann
aber Variante 1 (Systemdatumsformat auf "deutsch" setzen) wäre sinnvoller.
Grüße
Biber
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.
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
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:
Grüße
Biber
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
Moin aiwa002,
okay, das wäre dann so eine Mimik:
Breitgetreten wird das Ganze übrigens im Tutorial "Workshop Batch for Runaways III" unten unter Anleitungen.
Grüße
Biber
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%]
Grüße
Biber