Auf Kommentar antworten

Batch-Tricks: Werte tauschen

Eine häufig gebrauchte Sache in einigen Algorithmen (besonders Sortieren) ist, zwei Werte miteinander zu vertauschen. Häufig sieht das dann in etwa so aus:
temp := a;
a := b;
b := temp;

In einigen Sprachen (wie beispielsweise Python oder Lua) kann man das wesentlich eleganter lösen, da es dort Tupel gibt:

a, b = b, a

Und tatsächlich ist eine ähnliche Methode auch in Batchdateien möglich.

Da Variablenersetzung in CMD in dem Moment geschieht, in dem eine Zeile gelesen wird (aus Kompatibilitätsgründen) außer, wenn man ! statt % verwendet (verzögerte Auswertung), kann man sich das zunutze machen, da dann in jedem Falle der Wert der Variablen eingesetzt wurde, bevor die Zeile ausgeführt wurde. Damit kann man nun auch Variablenwerte in einer Zeile tauschen, ohne eine temporäre Variable zu benötigen:

set A=%B%&set B=%A%

Man sollte vielleicht vor dem & kein Leerzeichen machen, wenn es darauf ankommt, daß die Werte tatsächlich nicht mit einem Leerzeichen enden (bei Zahlen, mit denen man rechnet, sollte dies aber egal sein).

Würde man hier ! statt % benutzen, würden beide Variablen auf den Inhalt von B gesetzt werden, da der alte Wert von A nicht mehr erhalten bleibt.

Antworten

The content of this field is kept private and will not be shown publicly.