Auf variable zugreifen?

2 Antworten

Vom Beitragsersteller 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.)

stealthuser  22.11.2021, 16:36
@Erzesel

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