Wie kann ich batch variablen speichern und wieder abrufen?
Hallo, ich habe ein Problem, ich arbiete zurzeit an einen batch Minigame und möchte gerne das man einmal seinen Namen eingeben muss und er danch immer wieder von einer .txt Datei abgerufen wird. Am besten währe es natürlich wenn dann das jemand mir auch einen Code sendet der dann die "Namensabfrage" nach dem namen eingeben weg macht. Kann mir bitte jemand einen Code senden der das möglich macht?
LG Simon
3 Antworten
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.
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.
Danke, jatzt kann ich weiter programmieren !:) (und vor allem schon nach einer stunde ne antwort, junge wie krass bist du?)