CMD mehrere Variablen in einer .txt Datei speichern?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Gleich im Voraus! : Batchvariablen sollten nie ein Minus,Plus,*,/ enthalten! Die RechenRoutine von set /a würde dies als Mathematisches Zeichen intepretieren und auf eine nicht vorhandene Variable zugreifen (böse Falle)

Am einfachsten geht das Speichern, wenn Du allen Variablen, welch Du speichern möchtest einen gemeinsamen Prefix voranstellst.

set "Irgendwas.x=Hallo"
set "Irgendwas.y=9"
set "Irgendwas.Player2.Wasser=9"
set "Irgendwas.Player2.Gras=Ich schmecke  die Farben"
  rem  alle Irgendwas. anzeigen
set "Irgendwas."
  rem oder  spezieller  Irgendwas.Player2.
set "Irgendwas.Player2."

...zeigt alle Variablen an, welche mit besagtem Namensteil beginnen.

  • Das Speichern ist trivial indem Wir die Ausgabe einfach in eine Datei umleiten.
  • vergiss den Doppelpunkt als Trenner zwischen VariablenName und Wert. (das verkompliziert das Einlesen nur!)

save.cmd

set "Mein.Holz=3"
set "Mein.Metall=2"
set "Mein.Wasser=26"
  rem speichern
set "Mein.">"test.sav"
pause

Das einlesen geht fast ebenso einfach:

readVars.cmd

  rem variablen  aus Datei einlesen
for /f "usebackq tokens=*" %%a in ("test.sav") do set "%%a"
  rem variablen anzeigen
set "mein."
pause

die harte Tour, wie Du es Dir vorgestellt hast:

...und das sind nur 3 Variablen (bei 20 Variablen für ein Spiel eine Tortur😱)

set "Holz=8"
set "Metall=6"
set "Wasser=7"
  rem jede zu speichende Zeile  einzeln zurechtbasteln und in die Datei schreiben
@(
    echo Holz:%Holz%
    echo MMetall:%Metall%
    echo Wasser:%Wasser%
)>"test2.sav"
pause

wieder Zurückholen:

  rem variablen  aus Datei einlesen:  Token 1 und den Rest am Doppelpunkt trennen  und  beide Teile mit einem "Gleich" dem set-befehl zuführen
for /f "usebackq tokens=1* delims=:" %%a in ("test2.sav") do set "%%a=%%b"
  rem variablen anzeigen
echo Holz:%Holz%
echo Metall:%Metall%
echo Wasser:%Wasser%
pause
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

WitherHD 
Fragesteller
 26.04.2020, 15:37

Habe dazu noch eine Frage

  rem  alle Irgendwas. anzeigen
set "Irgendwas."

was meinst du damit genau, es wirt mir nicht Angezeigt

0
Erzesel  26.04.2020, 15:43
@WitherHD

schreibe doch einfach mal das ganze in eine Batch...

test.cmd

set "Irgendwas.x=Hallo"
set "Irgendwas.y=9"
set "Irgendwas.Player2.Wasser=9"
set "Irgendwas.Player2.Gras=Ich schmecke  die Farben"
  rem  alle Irgendwas. anzeigen
set "Irgendwas."
  rem oder  spezieller  Irgendwas.Player2.
set "Irgendwas.Player2."
pause

.dann siehst du was die Kommandos tun...🥱

1
WitherHD 
Fragesteller
 26.04.2020, 15:48
@Erzesel

Habe mein Fehler gefunden habe das eigentlich schon mal abkopiert, habe aber versehentlich dabei auf eine Taste getrückt so das es nur Falsch werden konnte. Auf jeden Fall danke dir.

0

Probiere es mit

echo Holz: 3>>variablen.txt

diese kannst du dann mit einer For-Schleife abrufen. Falls du da Hilfe brauchst, guck dir ein Tutorial an, denn sonst schreibst du mir ab, aber verstehst es nicht...

LG