Gibt es eine Möglichkeit, ein Checkpoint-System in Batch-Dateien zu erstellen? [Duplikat]

Dec 20 2020

Gibt es eine Möglichkeit, ein Checkpoint-System in Batch-Dateien zu erstellen? Ich unterrichte mich selbst im Batch-Modus und erstelle ein textbasiertes RPG-Spiel. Wenn das Programm jedoch geschlossen wird, beginnt es ganz am Anfang des Codes, ohne dass ein Fortschritt gespeichert wird. Ich möchte ein komplexes Langzeitspiel machen, aber ich möchte nicht jedes Mal einen Neustart des Spiels durchführen müssen. Gibt es eine Möglichkeit, den Fortschritt zu speichern, damit Sie das Programm erneut öffnen und entweder neu starten oder dort weitermachen können, wo Sie aufgehört haben, wobei alle vorherigen Optionen intakt sind?

Antworten

1 Magoo Dec 20 2020 at 13:59

Möglicherweise ist dies die einfachste Methode zum Speichern / Neuladen:

Reservieren Sie ein Zeichen (z. B. #), das als erstes Zeichen aller Variablen verwendet werden soll, die Sie aufzeichnen möchten.

so...

set #points=35
set action=3
set #money=22

#Verwenden Sie zum Speichern aller Variablen

set #>filename

das würde sparen #moneyund #points, aber nichtaction

Zum Nachladen verwenden

for /f "delims=" %%a in (filename) do set "%%a"

Dadurch werden alle in der Datei gespeicherten Variablen neu geladen - natürlich nur #variables.

T3RR0R Dec 20 2020 at 16:25

Zusätzlich zu Magoos Antwort bezüglich einer sehr effizienten Speicher- / Lademethode (mit einer geringfügigen Änderung): Das Erstellen von Skripten für Benutzerprofile kann folgendermaßen erfolgen:

@Echo off
rem /* predefine your key variables prior to this loop */
:name :# load point
 Set /P "name=Enter your name: "
 If Not "%name%" == "" (
rem /* If character exists; load */
  If Exist "%~n0_%name%.bat" (
   Call "%~n0_%name%.bat"
rem /* Initialise character save using predefined variables if character new */
  ) Else ( Call :Save )
rem /* Force Assignment of name variable */
 ) Else ( Goto name )
===============================================
::: Script body
::: End of Script
Goto :Eof
===============================================
:Save :# function
rem /* variation on magoo's method of saving */
 (For /F "Delims=" %%G in ('Set #')Do Echo/Set "%%G")>"%~n0_%name%.bat"
Exit /B 0