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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Uwe (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Uwe schrieb:
> Könnte mir jemand einen Tipp geben?

RunAsDate

von JJ (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.
@echo off
setlocal

set "fakeDate=24.12.2019"

set "oldDate=%date%"
echo.%fakeDate%|date

c:\testdir\test.exe

echo.%oldDate%|date

von Sascha R. (srt2018)


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

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%

von JJ (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


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

von Sascha R. (srt2018)


Bewertung
0 lesenswert
nicht lesenswert
echo %date%

gibt nur das Datum aus, es gibt noch
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.
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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.