Batch zur Datumsänderung - kommt nicht aufs aktuelle Datum zurück

spreagadh

Lt. Junior Grade
Registriert
Aug. 2009
Beiträge
256
Hallöle liebe Leute!

Ich hoffe mal dass ich das hier im richtigen Unterforum poste...ich dachte mir dass es nicht wirklich zur Programmierung gehört, also erschien's mir hier am passendsten. Bitte nicht erschlagen wenn's doch fehl am Platz ist ;)
Zu meinem Problem: Ich hab da so ein Spiel, MLB 2k12, das ich ab und an gerne nochmal anschmeiße. Dadurch dass das Teil der letzte Ableger einer zum Tode verdammten Reihe war und wohl dementsprechend stiefmütterlich hingeschludert wurde gibt's vor allem einen ganz großen Makel.
Und zwar hat das Spiel eine fest implementierte "Live Season/Live Roster"-Funktion die offiziell nur bis zum Ende der 2012er Saison läuft, da er sich danach einfach nach Roster Updates dumm und dämlich sucht.
Daher muss man dem Spiel vorgaukeln man wär immer noch irgendwo zwischen April und September 2012. Zuerst hab ich das tatsächlich jedes Mal manuell gemacht, bis ich dann irgendwann mal irgendwo einen Batch-Code dafür gefunden und genutzt habe:

Code:
@echo off:: Save month, day, and year from current date in MM/DD/YYYY format
For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @(
 Set Month=%%A
 Set Day=%%B
 Set Year=%%C
)
:: Set tomorrow's date to today's date plus one
set /A Tomorrow=%Day%+1
:: Save pre-run hour from time variable
set hh1=%time:~-11,2%
set /a hh1=%hh1%+100
set hh1=%hh1:~1%
:: Display current date and time
echo Current date is: %date% %time%
:: Set date to September 25th
date 09/25/2012
echo Date changed to September 25th.
:: Start MLB2K12 and wait for exit
cd /d "C:\Program Files (x86)\2K Sports\Major League Baseball 2K12\"
echo Starting MLB 2K12...
Start /WAIT mlb2k12.exe
pause
:: Save post-run hour
set hh2=%time:~-11,2%
set /a hh2=%hh2%+100
set hh2=%hh2:~1%
:: If hh2 is less than hh1 increment day, else keep same
echo Syncing date...
if /i %hh2% LSS %hh1% (
date %Month%/%Tomorrow%/%Year%
) else (
date %Month%/%Day%/%Year%
)
echo Current date is:
date /t
pause
exit

Nachdem ich nun vor kurzem meinen Rechner neu aufgesetzt hab (von Win10 Upgrade auf frisches Win10) hat der batch allerdings so seine Problemchen damit, das aktuelle Datum wieder einzustellen. Ich denke dass es irgendwie damit zusammenhängt dass ich von einer englischsprachigen Windows-Version jetzt wieder auf die Deutsche umgestiegen bin.
Ich hab zwar schon das Systemformat auf MM/TT/JJJJ umgestellt, was allerdings nicht direkt was mit dem Fall zu tun hatte, und die Umstellung hin auf den 25.09.2012 funktioniert auch problemlos.
Aber zurück geht's nicht mehr, da muss ich nach dem Beenden des Spiels das aktuelle Datum manuell eingeben. :rolleyes:
Nun hab ich nicht ganz so viel Ahnung von diesem Code...ich versteh ihn so weit um zu wissen dass ich damit keinen Atomreaktor hochjage, aber was genau er wo ausliest und zwischenspeichert blick ich nicht so ganz.

Vielleicht kann mir hier ja jemand mit meinem Problemchen aushelfen, damit ich meine Zeitreisen wieder ganz ohne manuelle Eingaben machen kann :)

Schöne Grüße
​spreagadh
 
Dass das im Großen und Ganzen nicht unbedingt die optimale Idee ist weiß ich. Allerdings läuft das ganze auch wenn überhaupt mal abends für ein, zwei Stündchen, danach wird's ja wieder zurückgeändert. Da läuft nebenher abgesehen vielleicht vom Dropbox-Sync nix, und . Da dürfte abgesehen von den Spielständen nix an Dateien geändert werden.
Und bisher hat's da auch in über 3 Jahren nie Probleme gegeben, daher seh ich das ganz blauäugig unkritisch ;)

RunAsDate hatte ich damals auch schonmal ausprobiert, und jetzt gerade nochmal, und das tut's leider aus irgendwelchen Gründen nicht.
 
Gib mal in der Eingabeaufforderung einfach nur date ein, da sollte das Eingabe-Format erscheinen.
 
Datum, ick hör die trapsen…
Allein weil bei uns TT.MM.JJJJ und JJJJ-MM-TT kursieren habe ich dies konstruiert:
Code:
if %date:~2,1% == . goto TMJ
::JJJJ-MM-TT
set Jahr0=%date:~0,4%
set Monat0=%date:~5,2%
set Tag0=%date:~8,2%
goto weiter
:TMJ
::TT.MM.JJJJ
set Jahr0=%date:~6,4%
set Monat0=%date:~3,2%
set Tag0=%date:~0,2%

:weiter
Das nochmals mit einem IF auf den / zu testen bevor es ›weiter‹ geht ist kein Hexenwerk mehr. Selbst in VBA, aus Rohdaten, habe ich einen noch schlimmeren Input sortieren müssen weil keine Systemfunktion M/T/J, T.M.J, JJJJ-MM-TT usw. in einen Datumswert wandelt.

Für den Fall, dass das Setzen des neuen und alten Datums an Systemvorgaben hängt muss man in den IFs noch eine Flaggenvariable setzen die dann wieder über IFs die richtige Sortierung benutzt.

CN8
 
Zurück
Oben