Umgang mit externen Variablen innerhalb einer FOR ... DO Schleife ...
Hallo BATCH'elors ..
mein oben beschriebene Aufgabenstellung habt Ihr Euch sicher längt an den Schuhsolen abgelaufen .. - ich bitte daher höflich um Eure - nachsichtige - Hilfe:
Ich wüßte gerne, wie man in einer (zudem verschachtelten) FOR-Schleife mit solchen (externen) Variablen umgehen muß, die nicht zum internen Vorrat, wie %%i , %%j gehören:
1.) Ich versuche, mit Hilfe einer geschachtelten FOR-DO-Schleife, Bildschirm-Farben ("COLOR xy") je nach Farb- und Helligkeits-Kontrast auf günstige Brauchbarkeit zu untersuchen ...
2.) Dabei würde ich gerne innerhalb der Schleife einen Zählvorgang - etwa bezüglich brauchbar erscheinender Farbkombinationen - in Gang setzen: Als Neuling habe ich zunächst ausserhalb der Schleife - zwecks Initialisierung der Variablen 'lfdnum' begonnen mit
SET /A lfdnum=0
- danach wollte ich bei jedem Treffer innerhalb der Schleife fortsetzen mit
SET /A lfdnum=%lfdnum% + 1
Dieses Vorgehen ist mir in harmloseren Fällen (Geradeaus-Programmierung, auch in SUB-Routinen) durchaus bereits gelungen. Hingegen schaffe ich es nicht, - experimentell, etwa per Verdopplung von Prozent-Zeichen o.ä. - die Variable 'lfdnum' innerhalb der Schleife - im Fall dortiger Erfolgs-Treffer - zu inkrementieren.
- dabei begehe ich vielmehr wohl einen grundsätzlichen - formalen - Fehler, - was die "Welten" der Variablen innerhalb und ausserhalb solcher Schleifen betrifft. Dies verläuft im übrigen aber ohne jede berüchtigte Fehlermeldung "Syntaxfehler".
- würde mich mich bitte jemand über dieses Dilemma aufkläen .. - danke im Voraus für jede erdenkliche Hilfe!
Mit freundlichen Grüßen
Juergenl
mein oben beschriebene Aufgabenstellung habt Ihr Euch sicher längt an den Schuhsolen abgelaufen .. - ich bitte daher höflich um Eure - nachsichtige - Hilfe:
Ich wüßte gerne, wie man in einer (zudem verschachtelten) FOR-Schleife mit solchen (externen) Variablen umgehen muß, die nicht zum internen Vorrat, wie %%i , %%j gehören:
1.) Ich versuche, mit Hilfe einer geschachtelten FOR-DO-Schleife, Bildschirm-Farben ("COLOR xy") je nach Farb- und Helligkeits-Kontrast auf günstige Brauchbarkeit zu untersuchen ...
2.) Dabei würde ich gerne innerhalb der Schleife einen Zählvorgang - etwa bezüglich brauchbar erscheinender Farbkombinationen - in Gang setzen: Als Neuling habe ich zunächst ausserhalb der Schleife - zwecks Initialisierung der Variablen 'lfdnum' begonnen mit
SET /A lfdnum=0
- danach wollte ich bei jedem Treffer innerhalb der Schleife fortsetzen mit
SET /A lfdnum=%lfdnum% + 1
Dieses Vorgehen ist mir in harmloseren Fällen (Geradeaus-Programmierung, auch in SUB-Routinen) durchaus bereits gelungen. Hingegen schaffe ich es nicht, - experimentell, etwa per Verdopplung von Prozent-Zeichen o.ä. - die Variable 'lfdnum' innerhalb der Schleife - im Fall dortiger Erfolgs-Treffer - zu inkrementieren.
- dabei begehe ich vielmehr wohl einen grundsätzlichen - formalen - Fehler, - was die "Welten" der Variablen innerhalb und ausserhalb solcher Schleifen betrifft. Dies verläuft im übrigen aber ohne jede berüchtigte Fehlermeldung "Syntaxfehler".
- würde mich mich bitte jemand über dieses Dilemma aufkläen .. - danke im Voraus für jede erdenkliche Hilfe!
Mit freundlichen Grüßen
Juergenl
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 247375
Url: https://administrator.de/contentid/247375
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Juergenl!
Wenn Du nur zählen willst, einfach
und die Anzahl nach Beendigung der Schleife ausgeben.
Willst Du den aktuellen Wert des Zählers auch innerhalb der Schleife verwenden / ausgeben, benötigst Du "
Grüße
bastla
Wenn Du nur zählen willst, einfach
set /a lfdnum+=1
Willst Du den aktuellen Wert des Zählers auch innerhalb der Schleife verwenden / ausgeben, benötigst Du "
delayedExpansion
" (siehe zB Tutorial zur FOR-Schleife) - etwa:@echo off & setlocal enabledelayedexpansion
set /a lfdnum=0
for /L %%i in (1,1,7) do if %%i lss 5 set /a lfdnum+=1 & echo Anzahl: !lfdnum!
bastla
Hallo Juergenl!
Freut mich, wenn's hilft ...
... und BTW: Die Schreibweise "
Grüße
bastla
Freut mich, wenn's hilft ...
... und BTW: Die Schreibweise "
!lfdnum!
" ergibt sich ja aus der Verwendung der "delayedExpansion
" ("!" anstatt "%" dient der Kennzeichnung jener Variablen, die "verzögert" - also nicht schon bei Beginn der Verarbeitung zB der Schleife - aufgelöst / ausgewertet werden sollen) ...Grüße
bastla