eissssbaer
Goto Top

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.

Content-Key: 195702

Url: https://administrator.de/contentid/195702

Printed on: April 25, 2024 at 15:04 o'clock

Member: Freund.der.Nacht
Freund.der.Nacht Dec 11, 2012 at 18:33:16 (UTC)
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
Member: Eissssbaer
Eissssbaer Dec 11, 2012 at 18:56:58 (UTC)
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
Member: Freund.der.Nacht
Freund.der.Nacht Dec 11, 2012 at 19:08:54 (UTC)
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
Member: Eissssbaer
Eissssbaer Dec 11, 2012 at 19:20:13 (UTC)
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.
Member: pieh-ejdsch
pieh-ejdsch Dec 11, 2012 updated at 19:29:25 (UTC)
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
Member: pieh-ejdsch
pieh-ejdsch Dec 11, 2012 at 19:46:06 (UTC)
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
Member: Eissssbaer
Eissssbaer Dec 11, 2012 at 19:46:35 (UTC)
Goto Top
Perfekt hat geklappt danke an alle face-smile