Forum: PC Hard- und Software Bekomme einfache Batch-Datei nicht hin.


von Uwe (Gast)


Lesenswert?

Hallo rundherum,

meine Pc-Kenntnisse sind äussert mies, das weiß ich.
Seit Stunden versuche ich mit viel Sucherei im Netz
eine Batch-Datei zu schreiben, die Folgendes ausführen soll:

1) Aktuelles Tagesdatum (14.01.2020) in einer Variablen sichern.
2) Systemdatum auf ein festes, anderes Datum (z.B. 24.12.2019) setzen.
3) Programm in c:\testdir\test.exe starten.
4) Systemdatum aus Variable (Pkt. 1) nach Programmende (3) 
rekontruieren.

Punkt 2 bekomme ich hin mit date = 24.12.2019
Punkt 3 geht auch mit c:\testdir\test.exe

aber der Rest will ums verrecken nicht.

Für jemand, ders weiß sicher ein Kinderspiel, für mich leider nicht.

Könnte mir jemand einen Tipp geben?

Danke
Uwe

von Christian M. (Gast)


Lesenswert?

Willst Du das nicht lieber mit AutoIt o.ä. machen.
Batch finde ich kompliziert für sowas.
Ach ja: Windows?

Gruss Chregu

von MWS (Gast)


Lesenswert?

Uwe schrieb:
> Könnte mir jemand einen Tipp geben?

RunAsDate

von JJ (Gast)


Lesenswert?

Ich habe gerade kein Windows vor mir um zu testen aber aus dem 
Gedächtnis müsste das etwa so gehen:

set heute=%date:~0,2%.%date:~3,2%.%date:~6,4%

date = %heute%

von Sascha R. (srt2018)


Lesenswert?

JJ schrieb:
> Ich habe gerade kein Windows vor mir um zu testen aber aus dem
> Gedächtnis müsste das etwa so gehen:
>
> set heute=%date:~0,2%.%date:~3,2%.%date:~6,4%
>
> date = %heute%

Nein, so kann man das Systemdatum nicht setzen.

So geht es bei mir, benötigt allerdings Administrator-Rechte.
1
@echo off
2
setlocal
3
4
set "fakeDate=24.12.2019"
5
6
set "oldDate=%date%"
7
echo.%fakeDate%|date
8
9
c:\testdir\test.exe
10
11
echo.%oldDate%|date

von Sascha R. (srt2018)


Lesenswert?

>>
>> date = %heute%
>
> Nein, so kann man das Systemdatum nicht setzen.

Oh, geht doch. Sorry. Wieder was gelernt. Dann also auch so:
1
@echo off
2
setlocal
3
4
set "fakeDate=24.12.2019"
5
6
set "oldDate=%date%"
7
date = %fakeDate%
8
c:\testdir\test.exe
9
date = %oldDate%

von JJ (Gast)


Lesenswert?

Sascha R. schrieb:
> Oh, geht doch. Sorry. Wieder was gelernt. Dann also auch so:
> @echo off
> setlocal
>
> set "fakeDate=24.12.2019"
>
> set "oldDate=%date%"
> date = %fakeDate%
> c:\testdir\test.exe
> date = %oldDate%

Dabei sollte man aber die Zeit herausfiltern, sonst wird die Uhr auch 
zurückgestellt.

Edit zu oben:
%date:~0,10% müsste das ganze Datum ausgeben. Das Zusammensetzen mit den 
Punkten ist nicht notwendig.

von Uwe (Gast)


Lesenswert?

JJ schrieb:
> set heute=%date:~0,2%.%date:~3,2%.%date:~6,4%
>
> date = %heute%

Vielen Dank für den Hinweis, aber es hatte nicht geklappt.

Sascha R. schrieb:
> So geht es bei mir, benötigt allerdings Administrator-Rechte.
> @echo off
> setlocal
>
> set "fakeDate=24.12.2019"
>
> set "oldDate=%date%"
> echo.%fakeDate%|date
>
> c:\testdir\test.exe
>
> echo.%oldDate%|date

SUPER !!!
Läuft so, wie ich wollte.
Allerherzlichen Dank, Sascha, klappt prima. ?

Tschüss
Uwe

von JJ (Gast)


Lesenswert?

Oder gibt date unter Windows nur das Datum und nicht auch die Zeit 
zurück?

von Sascha R. (srt2018)


Lesenswert?

1
echo %date%

gibt nur das Datum aus, es gibt noch
1
echo %time%

für die Uhrzeit.

Das sind übrigens keine richtigen Variablen. Man kann sie mit set 
setzen, aber das überschreibt deren Eigenschaft, stets die aktuelle 
Zeit darzustellen. Und die Systemzeit wird durch Setzen mit set auch 
nicht beeinflusst.
1
date = ...

dagegen ist der Aufruf des Kommandos "date" mit entsprechenden 
Argumenten.

Ein Hinweis noch: das Format von %date% und auch das des date-Kommandos 
ist abhängig von der Systemeinstellung. Wenn man "24.12.2019" verwenden 
will, geht das nur mit den entsprechenden Regional-Einstellungen. Das 
Skript ist also nicht weltweit verwendbar.

von oszi40 (Gast)


Lesenswert?

Uwe schrieb:
> ein Kinderspiel

Ein Backup vorher kann nützlich sein.

Man sollte mit diesen Experimenten vorsichtig sein. Ein falsches 
Dateidatum kann auch viel Ärger zur Folge haben z.B. auch bei 
Zertifikaten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.