Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Datum vom Vortag in Datei schreiben

Mitglied: AHoefer21

AHoefer21 (Level 1) - Jetzt verbinden

16.02.2006, aktualisiert 08.02.2007, 25922 Aufrufe, 11 Kommentare

Weis irgend jemand, wie man mit einem Batch-file das das Datum vom gestrigen Tag bekommt??
Mitglied: maneich
16.02.2006 um 19:15 Uhr
Hallo,

die Sache ist eigentlich sehr einfach, wird aber etwas komplizierter, wenn damit in den vorherigen Monat gewechselt werden muß, da hier ja bekanntlich der letzte Tag unterschiedlich ist.

Also zunächst mußt Du das Datum trennen z.B. mit

set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%

dann Abfrage, ob Datum 1 bzw. 01, wenn nein, kannst Du gleich 1 subtrahieren mit

if not %tag%==01 set /a tag=%tag%-1 & goto:end

Wenn %tag% 1 ist muß der letzte Tag des vorherigen Monats genommen werden. Der Januar wird einfach auf 13 gesetzt.

if not %monat%==1 goto ts1
set monat=13
set /a jahr=%jahr%-1
for %%e in (2 3 4 5 6 7 8 9 10 11 12 13) do if %monat%==%%e set /a monat=%monat%-1

Für die entsprechenden Tage, wird die Batch nochmals aufgerufen mit
set /a x=%monat%+2
set i = 3
%0 : loop,31,28,31,30,31,30,31,31,30,31,30,31,?

und bei :loop fertiggestellt

:loop
if %i%==%x% for %%e in (set goto:ts2) do %%e tag=%3
eingabe i=add %i%, 1
for %%e in (shift goto:loop) do %%e
:ts2
echo Tag: %tag%
pause

Zum Schluß wird das alles wieder zusammen gesetzt mit

:end
set datum=0%tag:~-2%.0%monat:~-2%.%jahr%

Die Batch als Ganzes:
Name = vortag.bat
Aufruf = vortag datum

01.
:: -----------------------zip
02.
@echo off
03.
cls
04.
if %2'==loop' goto %2
05.
set z=%1
06.
set jahr=%date:~-4%
07.
set monat=%date:~-7,2%
08.
set tag=%date:~-10,2%
09.
if not %tag%==01 set /a tag=%tag%-1 & goto:end
10.
if not %monat%==1 goto ts1
11.
set monat=13
12.
set /a jahr=%jahr%-1
13.
:ts1
14.
for %%e in (2 3 4 5 6 7 8  9 10 11 12 13) do if %monat%==%%e set /a monat=%monat%-1
15.
set /a x=%monat%+2
16.
set i = 3
17.
%0 : loop,31,28,31,30,31,30,31,31,30,31,30,31,?
18.
:loop
19.
if %i%==%x% for %%e in (set goto:end) do %%e tag=%3
20.
eingabe i=add %i%, 1
21.
for %%e in (shift goto:loop) do %%e
22.
:end
23.
set %z%=0%tag:~-2%.0%monat:~-2%.%jahr%
24.
cls
25.
:: ---------------------------snip
Was hier noch nicht berücksichtigt ist, ist das Schaltjahr.


MfG maneich
Bitte warten ..
Mitglied: Biber
14.04.2006 um 19:08 Uhr
Was hier noch nicht berücksichtigt ist, ist das Schaltjahr.

Na gut, dann berücksichtigen wir das Schaltjahr auch noch:
01.
:: ----snipp yesterday.bat ---Gibt Datum vom Vortag aus...
02.
@echo wscript.echo dateAdd("d",-1, date())>%temp%\gestern.vbs
03.
@cscript //nologo %temp%\gestern.vbs
04.
@del %temp%\gestern.vbs
05.
:: ---snapp
Yesterday >file.xyz würde dann das gestrige Datum in eine Datei file.xyz schreiben.

Gruß Biber
Bitte warten ..
Mitglied: maneich
14.04.2006 um 20:27 Uhr
Hallo,

@Biber
so kann man es natürlich auch einfacher machen; aber dies kann man noch verbessern:

01.
:: ----snipp yesterday.bat ---Gibt Datum vom Vortag aus...
02.
@echo wscript.echo "set out=" & dateAdd("d",-1, date())>%temp%\gestern.vbs
03.
@cscript //nologo %temp%\gestern.vbs>%temp%\gestern.bat
04.
for %%e in (%temp%\gestern.bat del) do call  %%e %temp%\gestern.???
05.
echo %out%
06.
:: ---snapp
in %out% steht dann das gestrige Datum zur Weiterverarbeitung.

MfG maneich
Bitte warten ..
Mitglied: Biber
14.04.2006 um 20:55 Uhr
@maneich
Mal sehen, wer von uns beiden es zuerst auf einen Oneliner zusammengedampft hat *gg
01.
::------snipp
02.
@echo wscript.echo dateAdd("d",-1, date())>%temp%\gestern.vbs
03.
@For /f %%i in ('cscript //nologo %temp%\gestern.vbs') do @set "yesterdate=%%i"
04.
@del %temp%\gestern.vbs
05.
::---snapp
Nun steht es in %yesterdate%

Amüsierten Gruß
Biber
Bitte warten ..
Mitglied: thats
08.02.2007 um 07:28 Uhr
hallo an alle,

hab mir das script mal angesehen und wollts mal testen. nur leider hab ich das problem, dass ich in der zeile (s.u.) folgende fehlermeldung bekomme:
Ungültige Zahl. Nummerische Konstanten sind entweder dezimale (17), hexadezimale(0x11) oder oktale (021) Zahlen.

01.
if not %tag%==01 set /a tag=%tag%-1 & goto:end
Bitte warten ..
Mitglied: Biber
08.02.2007 um 07:55 Uhr
Moin thats,

das passiert, wenn in der Variablen %tag% eine 08 bzw. 09 steht.
Zahlen mit einer führeneden Ziffer Null werden ja, wie der sympathische Weltmarktführer dokumentiert hat, als Oktal-Werte interpretiert.
Und da sind natürlich 08 und 09 ungültig.

Workaround:
01.
...
02.
REM Sonderbehandlung Tag ist 01....
03.
if %tag%==01 goto Sonderfall
04.
REM alle anderen Fälle...
05.
Set /a %tag%=1000%tag%
06.
Set /a %tag%-=1
07.
Set tag=%tag:~-2,2%
...oder, auf deutsch:
- mache aus 01,...07...22...30 eine 100001, ....100007....100022, ...100030
- subtrahiere 1
- nimm vom Ergebnis nur die letzten beiden Stellen

Gruss
Biber
Bitte warten ..
Mitglied: thats
08.02.2007 um 09:09 Uhr
okay danke, biber.

klappt soweit, nur wenn ich das datum auf éinen monats-1. stelle, mag er mich nicht mehr.

mein code einstweilen:
01.
if %2'==loop' goto %2
02.
set z=%1
03.
set jahr=%date:~-4%
04.
set monat=%date:~-7,2%
05.
set tag=1000%date:~-10,2%
06.
if not %tag%==100001 set /a tag=%tag%-1 & goto:end
07.
if not %monat%==1 goto ts1
08.
set monat=13
09.
set /a jahr=%jahr%-1
10.
:ts1
11.
for %%e in (2 3 4 5 6 7 8 9 10 11 12 13) do if %monat%==%%e set /a monat=%monat%-1
12.
set /a x=%monat%+2
13.
set i = 3
14.
%0 : loop,31,28,31,30,31,30,31,31,30,31,30,31,?
15.
:loop
16.
if %i%==%x% for %%e in (set goto:end) do %%e tag=%3
17.
eingabe i=add %i%, 1
18.
for %%e in (shift goto:loop) do %%e
19.
:end
20.
set z=%tag:~-2,2%.%monat:~-2,2%.%jahr%
21.

22.
pause
Bitte warten ..
Mitglied: maneich
08.02.2007 um 11:59 Uhr
Hallo,

was für die Berechnungen bei führender Null für den Tag gilt, sollte dann ja auch für den Monat gelten.

Wenn Du bei der Ermittlung rein auf Batchbasis bleiben willst, ist es sicher besser, die führenden Nullen zunächst zu entfernen, und am Ende wieder hinzu zu fügen.

Also:

set jahr=%date:~-4%
set monat=%date:~-7,2%
set tag=%date:~-10,2%
if %tag%<10 set tag=%tag:~-1%
if %monat%<10 set monat=%monat:~-1%

damit sind keine führenden Nullen mehr vorhanden.

Nach den Berechnungen dann die Umkehr:

if %tag%<10 set tag=0%tag%
if %monat%<10 set monat=0%monat%

Berechnungen für ein Datum sind auf reiner Batchbasis etwas umständlich. Einfacher geht es mit VBS (siehe Beispiele weiter oben), da hier bereits alle Möglichkeiten fest integriert sind und der Ablauf dürfte sicher genau so schnell sein.

MfG maneich
Bitte warten ..
Mitglied: thats
08.02.2007 um 12:32 Uhr
also nachdem bei mir NUR der tag wichtig war und nicht das monat bzw jahr hab ichs mal so gelöst - mit meinen minderwertigen dos-kenntnissen. aber es funktioniert.
was mich etwas stört, dass ich für die schaltjahre leider kein vielfaches eingeben konnte, sodass er mir das immer auf die nächste 4 jahre von zb 2008 weg berechnet.

01.
@echo off
02.
set jahr=%date:~-4%
03.
set monat=%date:~-7,2%
04.
set tag=1000%date:~-10,2%
05.
set /a vormonat=%monat%-1
06.

07.
if not %tag%==100001 set /a tag=%tag%-1 & goto end
08.

09.
for %%j in (0 1 3 5 7 8 10) do if %vormonat%==%%j set /a tag=100031 & goto end
10.
for %%k in (4 6 9 11) do if %vormonat%==%%k set /a tag=100030 & goto end
11.

12.
set /a tag=100028
13.
for %%l in (2004 2008 2012 2016 2020 2024 2028 2032 2036 2040 2044 2048 2052) do IF %jahr%==%%l set /a tag=100029
14.

15.
:end
16.
set tag=%tag:~-2,2%
17.

18.
echo %tag%
19.

20.
pause
Bitte warten ..
Mitglied: Biber
08.02.2007 um 14:33 Uhr
Moin thats,

was mich etwas stört, dass ich für die schaltjahre leider kein vielfaches eingeben konnte,
eine Alternative zur For ...(2004.......2052) -Anweisung ist die FOR /L-Anweisung:
01.
>(=14:31:03  D:\temp=)
02.
>for %l in (2004 2008 2012 2016 2020 2024 2028 2032 2036 2040 2044 2048 2052) do @echo %l
03.
2004
04.
2008
05.
2012
06.
2016
07.
2020
08.
2024
09.
2028
10.
2032
11.
2036
12.
2040
13.
2044
14.
2048
15.
2052
16.

17.
(=14:31:09  D:\temp=)
18.
>for /l %l in (2004,4, 2052) do @echo %l
19.
2004
20.
2008
21.
2012
22.
2016
23.
2020
24.
2024
25.
2028
26.
2032
27.
2036
28.
2040
29.
2044
30.
2048
31.
2052
HTH Biber
Bitte warten ..
Mitglied: thats
08.02.2007 um 15:10 Uhr
ha super perfekt! also werd mich dann mal mit dem script ein paar hundert jahre verewigen. mal schaun obs solange hält +smile+

grüße thats
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Datensätze vom Vortag per Batch aus Datei auslesen

gelöst Frage von makroll10Batch & Shell2 Kommentare

Hallo, ich versuche gerade per Batch eine Vergleichsoperation mit dem Vortagesdatum hinzubekommen. Leider bisher erfolglos. Die Ausgangsdaten der Datei ...

Batch & Shell

Datei mit Datum im Namen erstellen

gelöst Frage von pbelclBatch & Shell6 Kommentare

Ich habe mir ein kleines Batch geschrieben, das mir eine Date erstellt, die im Namen das Datum und die ...

JavaScript

Zeit und Datum in Datei schreiben

Frage von MarcysJavaScript2 Kommentare

Hallo, mit Node-Red habe ich den Temperatursensor DHT22 ans Laufen bekommen. Ich habe zwei Node-Funktionen erstellt, die mir die ...

Batch & Shell

Kopieren einer Datei mit Datum per PS

gelöst Frage von xm-bitBatch & Shell4 Kommentare

Hallo, ich brauche mal eure Hilfe. Ich möchte eine Datei per Powershell kopieren. Im Ergebnis soll gleichzeitig das aktuelle ...

Neue Wissensbeiträge
Windows 10

Windows 10 kann XPS erzeugen aber nicht anzeigen ????

Erfahrungsbericht von Deepsys vor 1 TagWindows 101 Kommentar

Heute schickt mir ein Kollegen eine E-Mail mit einer XPS-Datei vom Kunden im Anhang und fragt wie er diese ...

Exchange Server

1und1 IONOS: Probleme beim Mailversand mit Exchange

Information von reksierp vor 1 TagExchange Server3 Kommentare

Hallo, seit Do, 17.1.19 etwa Mittags nimmt 1und1 IONOS keine Mails mehr über den Standard-Port SMTP 25 an. Nachdem ...

LAN, WAN, Wireless

Cisco Mikrotik VPN Standort Vernetzung mit dynamischem Routing

Anleitung von aqui vor 2 TagenLAN, WAN, Wireless

1. Allgemeine Einleitung Das nachfolgende Tutorial ist eine Fortführung der hier bei Administrator.de schon bestehenden VPN Tutorials und beschreibt ...

Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 3 TagenWindows Mobile1 Kommentar

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Wo lässt sich das Gateway in der FRITZ!Box 7360 einstellen?
gelöst Frage von OssabowLAN, WAN, Wireless18 Kommentare

Hallo all, nach gründlicher Suche scheine ich der einzige zu sein der das Problem hat (macht micht schon mal ...

Windows Server
Sicherung Domain Controller
gelöst Frage von Monto1Windows Server16 Kommentare

Hallo zusammen, wie sichert Ihr den Domain Controller? Selbst, wenn zwei parallel laufen, ist eine Sicherung doch mal nützlich. ...

Windows Server
MSSQL Backup in Form von .sql einspielen
Frage von janosch12Windows Server15 Kommentare

Guten Morgen, wir verwenden das Tool SQLandFTPBackup ( ) zum sichern einiger MSSQL Datenbanken. Nun sichert das Toll die ...

Microsoft Office
Office 2016 oder Office 2019
Frage von PeterzMicrosoft Office13 Kommentare

Hallo zusammen, wir müssen unser Office von 2010 auf eine neuere Version Umstellen. Jetzt stellt sich die Frage, ob ...