eissssbaer

Batch Variablen zusammenfügen und Wert ausgeben

Moin,
Folgendes Problem: ich habe eine Variable die den Wert x1y1 bestitzt
set var1=x1y1


set a=var
set b=1

Wie kann ich nun die beiden Variablen zusammmensetzen, sodass aber der Wert der Variable var1 angezeigt wird?
echo % %a%%b% %
Hier sollte x1y1 ausgegeben werden aber das funzt nicht.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 195702

Url: https://administrator.de/forum/batch-variablen-zusammenfuegen-und-wert-ausgeben-195702.html

Ausgedruckt am: 25.04.2025 um 12:04 Uhr

Freund.der.Nacht
Freund.der.Nacht 11.12.2012 um 19:33:16 Uhr
Goto Top
Hallo Eissssbaer,

ich verstehe dein Problem nicht ganz.

ich versuchs es mal nachzuvollziehen:

Die Lösung für den ersten Teil der Frage:
@echo off

set a=var
Echo %a%
:: Ausgabe: var

set b=1
Echo %b%
:: Ausgabe: 1

:: Vlt. so?
set c=%a%%b%
Echo %c%
:: Augabe: var1

Den zweiten Teil versteh ich nicht.
@echo off
set var1=x1y1
Echo %var1%
::Ausgabe: x1y1
:: Was willst du zusammensetzen???

Bitte formuliere dein Problem präziser!

MfG
Batch-Lord
Eissssbaer
Eissssbaer 11.12.2012 um 19:56:58 Uhr
Goto Top
@echo off

set var1=123
Echo %var1%
:: Ausgabe: 123

set b=var
Echo %b%
:: Ausgabe: var

set a=1
Echo %a%
:: Augabe: 1


Echo %b%%a%
:: hier sollte nicht "var1" ausgegeben werden sondern der wert der Variable "123"
set %b%%a%
:: Ausgabe : var1=123 ; genau wie hier aber ohne das "var1="


Ich hoffe ich konnte mich jetzt verständlich ausdrücken face-wink
Freund.der.Nacht
Freund.der.Nacht 11.12.2012 um 20:08:54 Uhr
Goto Top
Hallo Eissssbaer,

kann auch an mir liegen face-smile bin früh raus und Müde. Zurück zum Thema:

@echo off
set var1=123
set a=1
set b=var
set %b%%a%=%var1%
::oder mit Überprüfung
if "%b%%a%"="var1" set %b%%a%=%var1%  

Echo %var1%
::Ausgabe: 123

Ich hoffe, das ich das dieses mal geschnallt habe!

Wenn ja, wozu soll das denn gut sein?

MfG
Batch-Lord
Eissssbaer
Eissssbaer 11.12.2012 um 20:20:13 Uhr
Goto Top
Noch nicht ganz face-smile
Also die Problematik ist, dass in den Variablen var1 - var100 Werte eingespeichert werden:
Dann soll man einfach eine Zahl (zB 79) eingeben können und dann den jeweiligen Wert von "var79" ausgegeben werden im Prinzip wie bei Arrays.
pieh-ejdsch
pieh-ejdsch 11.12.2012 aktualisiert um 20:29:25 Uhr
Goto Top
moin Eissssbaer,

entweder im Call mit doppelter Prozenzeichen Auflösen oder mit verzögerter Auflösung in Ausrufezeichen setzen
set foo=a
set bar=1
set a1=x
set a2=y
set a3=z
call echo %%%foo%%bar%%%
setlocal enabledelayedexpansion
echo !%foo%%bar%!
for /l %%i in (1 1 3) do echo !%foo%%%i!
pause
Erläuterung: im Call werden doppelte Prozentzeichen zu einem Aufgelöst, die Variablen in Prozentzeichen werden aufgelöst und zum Schluss werden die Prozentzeichen, welche voher doppelt waren zum Auflösen des übriggebliebenen Variablennamens verwendent.
Beim Ausrufezeichen wird dieses zum Schluss - also wärend der engultigen Darstellung aufgelöst.

Dazu hat @jeb-the-batcher auch ein paar Secrets aufgedeckt.

Gruß Phil
pieh-ejdsch
pieh-ejdsch 11.12.2012 um 20:46:06 Uhr
Goto Top
Hallo Batch-Lord,

eine Variable im Batch kann nicht mit einer Zahl anfangen, da die Batchparamter %0-%9 vor der Varible %0abc% - %9abc%
aufgelöst werden.

Biber hatte mal ein Special gepostet, wobei die Batchparameter den Ausgaben entsprechen:
echo %1a%
call :sub %%1 %%2 %%3 %%4 %%5 %%6 %%7
exit /b
:sub
echo %2
Gruß Phil
Eissssbaer
Eissssbaer 11.12.2012 um 20:46:35 Uhr
Goto Top
Perfekt hat geklappt danke an alle face-smile