Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

Trickreiches DOS-Bachfile-Problem...

Mdl / 3 Antworten / Flachansicht Nickles

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

bei Antwort benachrichtigen
Mdl Borlander „Wie schon von Andreas aufgeführt: Mit mehr Details lässt...“
Optionen

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  


bei Antwort benachrichtigen