Angenommen ich habe in DOS eine Env-Variablen a, die auf eine andere Env-Variable verweist.
Wie kann ich mir den Inhalt von der Variable anzeigen lassen, auf die a verweist?
Bsp:
set a=b
set b=c
echo a verweist auf die Variable %a%, deren Inhalt ??? ist.
Ich suche jetzt den entsprechenden Ausdruck für den Platzhalter ???, der für alle Belegungen von a funktioniert
Die korrekte Ausgabe im obigen Bsp wäre dann:
a verweist auf die Variable b, deren Inhalt c ist.
In dem Ausdruck darf als Variable natürlich nur 'a' vorkommen, da erst zur Laufzeit bekannt ist, was 'a' nun wirklich beinhaltet.
.
Hoffe, ich habe es halbwegs verständlich ausgedrückt...
Viele Grüße,
Mdl
Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge
Hallo Andreas42,
Hallo Borlander,
danke für Eure Antworten.
Habe ein bißchen rumprobiert mit dem Batchfile-Erzeugen - ich hatte gehofft, dass es auch ohne geht - und nach etwas Herumprobieren hab ich diesmal auch wirklich 'ne Lösung gefunden, die rein auf Batchfile und nicht Mitzuhilfenahme anderer Hilfen (wie z.B. einem Exe-File, das dem Bachfile die Lösung bereitstellt).
Hier ist sie:
set a=b
set b=c
echo >delme.bat set a_ref=%%%a%%%
call delme.bat
del delme.bat
echo a verweist auf die Variable %a%, deren Inhalt %a_ref% ist
Die Belegungen im ersten Block können natürlich nach Belieben geändert werden.
Der zweite Block erzeugt eine Batchdatei, die dann ausgeführt (und wieder gelöscht wird).
Dabei fungiert das erste % als Escape-Char für das zweite %.
Im erzeugten Batchfile steht dann set a_ref=%b%
Die dritte ist die gewünschte Ausgabe.
Im Grunde ist natürlich nicht eine Textausgabe das Ziel, sondern die Möglichkeit den Inhalt des Inhaltes einer Variablen weiter verwenden zu können. Dies geht dann wie oben gezeigt mit der Definition einer neuen Set-Variablen.
Noch tiefere Dereferenzierungen sind damit natürlich analog möglich.
~~~~~~~~
Ach ja. Die Frage hatte durchaus einen praktischen Bezug. Meine Erfahrung ist aber, dass sobald dieser auch nur ansatzweise erwähnt wird, sich alle Antworten auf diesen beziehen und einem nachher der Kopf nur so schwirrt von den vielen mehr oder weniger hilfreichen Lösungen ;-)
Mir persönlich sind Fragen, die ein Problem auf den Punkt bringen auch lieber...
Habe noch ein/zwei DOS-Kniffelein im Hinterkopf. Wenn ich da wieder darüber stolpere gibt's mehr...
Viele Grüße,
Mdl