Wie kann ich batch variablen speichern und wieder abrufen?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Die Antwort von MarkusGenervt ist zwar eigentlich die beste Variante, aber du kannst das auch noch anders (und einfacher) hinbekommen:

echo %var1% > var1.txt
echo %var2% > var2.txt

einlesen kannst du die dann wieder über:

set /p var1 =< var1.txt
set /p var2 =< var2.txt

die Variable (abgespeichert) löschen:

del var1.txt

überprüfen ob die Variable (abgespeichert) definiert ist.

if exist var1.txt ( echo izz da )

Damit lassen sich dann ganz leicht getter und setter definieren:

:get_var
if exist %1.txt ( set /p %1 =< %1.txt && exit /b 0 )
exit /b 1

und 

:set_var
if defined %1 ( set return=0 ) else ( set return=1 )
echo !%1! > %1.txt
exit /b %return%

Die sich dann so aufrufen lassen: (var1 wird übergeben und aus der Datei geladen, dann wird überprüft ob dies erfolgreich war)

call :get_var var1
if %errorlevel% EQU 1 ( echo Wurde nicht gespeichert )

und (var1 wird übergeben und in die Datei geschrieben, dann wird geprüft ob dies erfolgreich war)

call :set_var var1
if %errorlevel% EQU 1 ( echo var1 ist nicht definiert )

dies waren jetzt nur ein paar Anwendungsbeispiele, gehen natürlich auch andere Sachen damit ;)

LG Tim

Speichern kannst Du das so:

echo.VAR=%VAR%>>MyData.ini

In der Datei steht dann z.B.

VAR=Meine Daten

Damit kannst Du dann einfach alle gespeicherten Variablen wieder in einem Rutsch laden:

setlocal enabledelayedexpansion
[…]
FOR /F "usebackq tokens=1,2* delims==" %%V IN ("MyData.ini") DO (
SET %%~V=%%~W
)
[…]
echo.!VAR!

Damit werden alle gespeicherten Variablen zurück geladen. Sogar, wenn mehrfach dieselbe Variable gespeichert wurde, wird am Ende nur die zuletzt gespeicherte Version auch geladen (quasi LIFO).

Hierbei muss aber SETLOCAL zwingend so gesetzt werden, da sonst die gesetzten Variablen nicht erhalten bleiben und die Variablen müssen daraufhin dann mit "!" anstatt "%" abgerufen werden.


Trickonomy 
Beitragsersteller
 11.04.2017, 13:33

Danke, jatzt kann ich weiter programmieren !:)      (und vor allem schon nach einer stunde ne antwort, junge wie krass bist du?)

also mit

echo var>test.txt

speicherst du den Variableninhalt in der Datei

mit

set/p var2=<test.txt

liest du Ihn wieder aus.

es gibt auch noch die Möglichkeit, Zeilenweise auszulesen, aber das hab ich grad auch nicht im Kopf.


timlg07  12.04.2017, 11:02

so schreibst du lediglich var in deine txt.