Auf variable zugreifen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Irgendwie falle ich jetzt vom Glauben ab... đŸ˜± Was machen wir denn seit Tagen?

Wir speichen Variablen in eine Datei und lesen diese aus. Ich kann ja verstehen, das fĂŒr viele AnfĂ€nger der For/f-Loop ein rotes Tuch ist, aber es geht nicht ohne...

@echo off
chcp 65001 >nul
@echo off
:start
Echo Enter youÂŽre Name!
set /p Name=
set "KontoFile=%Name%.Konto.txt"
 rem öffne Datei fĂŒr Name (wenn diese existiert)
if exist "%KontoFile%" (
  rem lies Variablen aus KontoFile
 for /f "usebackq tokens=*" %%a in ("%KontoFile%") do (set "%%a")
) else (
  rem was passiern soll wenn noch kein Konto besteht
 set "dia=n/a"
 set "blubb=n/a"
)

echo Hi %Name%
echo Kontostand:%dia% Dias
echo Dein Blubb: %blubb% 
echo:
echo MenĂŒ (drĂŒcke die Taste fĂŒr die Option)
echo [1] Neuen Kontostand eingeben
echo [2] Neuen Blubb eingeben
echo [X] Exit
echo:
:MenuLoop
choice /c 12x
if %errorlevel% equ 1 (
 set /p "dia= Gib Deinen neuen Kontostand ein : "
 goto :MenuLoop
)
if %errorlevel% equ 2 (
 call :bluberei
 goto :MenuLoop
)
 rem letzte option x braucht hier keinen Vergleich

 rem speichere die wichtigen Variablen (siehe https://www.gutefrage.net/frage/wie-kann-ich-eine-einzelne-var-ueberschreiben#answer-426414094)
(call )>"%KontoFile%" & for %%a in (dia,blubb) do (set %%a >>"%KontoFile%")
echo TschĂŒĂŸ
timeout 3 >nul
exit /b


:::: Subrooutines ::::
:bluberei
echo Laber
echo blubb blubb
set /p "blubb= Gib Deinen neuen Blubb ein : "
exit /b

FĂŒr AuswahlmenĂŒs sollte man Choice verwenden, das verhindert, das der Nutzer etwas eingibt, das nicht erwĂŒnscht ist. (Nutzer geben zu gern Unsinn ein)

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

ich habe schon eine Weile nicht mehr programmiert aber wenn ich es richtig weiß, dann kommt es auch darauf an ob eine Konstante oder Variable innerhalb einer Funktion definiert wurde.

Variablen und Konstanten die innerhalb einer Funktion definiert werden, können von anderen Funktionen idR. nicht verwendet werden.

Ich wĂŒrde Konstanten, wenn deren Werte in verschiedenen Funktionen benötigt werden immer global definieren.

Man kann beim Funktionsaufruf aber auch Variablen oder Konstanten direkt als Parameter mitgeben.

Erzesel  22.11.2021, 16:33

Das ist Batch, da gibt es keine echten Funktionen. Variablen sind in Batch immer global. (Ausnahme man verwendet bewusst setlocal/endlocal , was jedoch nur in sehr speziellen FĂ€llen verwendet werden sollte.)

0
stealthuser  22.11.2021, 16:36
@Erzesel

mag sein aber ein paar Grundlagen können trotzdem nicht schaden.

0