Variabelinhalt wiederum als Variabel verwenden.
Versuche gerade einen kleinen Batch zu Scripten welche eine Eingabe mit einem bestimmten Muster Codiert. Nun möchte ich nur ungern für jede Variable eine eigene überprüfung durchzuführen.
Ich versuch grad ein Script zu erstellen welches Eingaben nach einem Bestimmten Muster Codiert. Nun möchte ich nicht unbedingt, dass ich jede Variable einzeln Prüfen muss sonder würde gerne eine Variabel in einer Variabel verwenden.
Nur schaff ichs irgendwie nicht dass er die ausgabe als Variabel versteht und nicht als Textausgabe.
Im obigen Beispiel erhalte ich dann die Ausgabe < bs=%b1% > also die ausgabe mit den % funktioniert aber bei der Prüfung (Zeile 4) überprüft er dann auch genau dies < if %b1% = 1 set bs=z > und das kann er natürlich nicht interpretieren und endet in einem Syntaxfehler.
Wäre froh wenn mir da jemand helfen könnte.
Gruss
Apop
Ich versuch grad ein Script zu erstellen welches Eingaben nach einem Bestimmten Muster Codiert. Nun möchte ich nicht unbedingt, dass ich jede Variable einzeln Prüfen muss sonder würde gerne eine Variabel in einer Variabel verwenden.
rem zuerst
if %counter% LSS 8 set bs=%%%var%%counter%%% else set bs=%var%%pwcounter%
rem danach
if %bs% == 1 set bs=z
Nur schaff ichs irgendwie nicht dass er die ausgabe als Variabel versteht und nicht als Textausgabe.
Im obigen Beispiel erhalte ich dann die Ausgabe < bs=%b1% > also die ausgabe mit den % funktioniert aber bei der Prüfung (Zeile 4) überprüft er dann auch genau dies < if %b1% = 1 set bs=z > und das kann er natürlich nicht interpretieren und endet in einem Syntaxfehler.
Wäre froh wenn mir da jemand helfen könnte.
Gruss
Apop
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 204947
Url: https://administrator.de/forum/variabelinhalt-wiederum-als-variabel-verwenden-204947.html
Ausgedruckt am: 25.12.2024 um 14:12 Uhr
13 Kommentare
Neuester Kommentar
Hi Apop,
dazu benutze die doppelte Expansion der Shell (http://stackoverflow.com/questions/1199931/how-expand-a-cmd-shell-varia ..)
schreibe dazu Zeile 02 so:
und in in den Kopf deines Scripts muss noch ein:
Grüße Uwe
dazu benutze die doppelte Expansion der Shell (http://stackoverflow.com/questions/1199931/how-expand-a-cmd-shell-varia ..)
schreibe dazu Zeile 02 so:
if %counter% LSS 8 set bs=!%var%%counter%! else set bs=%var%%pwcounter%
setlocal ENABLEDELAYEDEXPANSION
Grüße Uwe
Hallo Apop85 und colinardo!
Das würde besser etwa so
aussehen, "delayedExpansion" lässt sich aber auch vermeiden:
Grüße
bastla
[Edit] Anpassung, damit %var% (und nicht "var") als Betandteil des Variablennamens verwendet wird [/Edit]
Das würde besser etwa so
if %counter% LSS 8 (set bs=!%var%%counter%!) else (set bs=!%var%%pwcounter%!)
if %counter% LSS 8 (call set "bs=%%%var%%counter%%%") else (call set "bs=%%%var%%pwcounter%%%")
bastla
[Edit] Anpassung, damit %var% (und nicht "var") als Betandteil des Variablennamens verwendet wird [/Edit]
Hallo Apop85!
Grüße
bastla
Als ausgabe für %bs% erhalte ich aber jedesmal NUL, heisst das echo zeigt bei der Variable nichts an...
Dann ist der gezeigte Code-Teil vermutlich selbst auch noch innerhalb einer "geklammerten" Struktur - falls ja (und da Du bereits "delayedExpansion" aktiviert hast), könntest Du anstelle von %bs%
einfach !bs!
verwenden ...Grüße
bastla