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
Andreas42 Mdl „Trickreiches DOS-Bachfile-Problem...“
Optionen

Hi!

Ich bin der Meinung, dass das so nicht geht, weil der Batchprozessor keine echten Referenzen bzw. Zeigervariablen kennt (und das würdest hier benötigen).

set x=wert

ist gedacht, um der Variablen x einen Wert zu zu weisen. Dabei kann der Wert durch einen Ausdruck festgelegt werden, der selbst wieder Werte von Variablen enthalten kann. Dabei kann man aber keine Referenz auf eine andere Variable übergeben.

IMHO ist der Batchprozessor da nicht sonderlich intelligent: da wird jede aktuelle Zeile in zwei Schritten bearbeitet. Im ersten werden die Variablen durch ihre aktuellen Werte ersetzt. Im zweiten wird wird dann das Ergebnis einfach nur vom Commandoprozessor ausgeführt.

Ist das eine reine Theoriefrage oder hat die Sache einen praktischen Hintergrund?

Falls das für eine batchgesteuerte Parameterübergabe an einen Befehl oder Programm benötigt wird, ist oft die einfachste Lösung, in einem Hauptbatch einen zweiten als Datei zu erzeugen und dann als Unterbatch aufzurufen.

Abhängig von der DOS-Version bzw. des verwendeten Batchprozessors (bei Windows) kann es durchaus auch andere Lösungen geben, wenn da eine Praxisaufgabe dahinter steht.

Bis dann
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen