Windows Batch-Dateien: Wie setze ich eine Variable mit dem Ergebnis eines Befehls?
Unter einer bash-Umgebung, die ich in der Regel tun:
var=$(command -args)
und die ich verwenden $var
mit seinem Wert gesetzt als das Ergebnis des Befehls.
Das gleiche gilt für eine eher konventionelle
set var=`command -args`
kompatibel in fast jedem unix-shell.
Wie könnte ich eine variable definieren, die in einer windows bat-Datei?
Ich habe versucht
set var=command -args
aber ich bekomme nur die "command-args" string.
InformationsquelleAutor der Frage Francis | 2009-05-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu tun, was Jesse beschreibt aus einer batch-Datei, die Sie schreiben müssen,
Aber, ich schlage vor, mit Cygwin auf Ihrem Windows-system, wenn Sie werden verwendet, um unix-scripting.
InformationsquelleAutor der Antwort nik
Muss man etwas vorsichtig sein, da die Windows-batch-Befehl:
nicht dieselbe Semantik haben wie die Unix-shell-Anweisung:
Betrachten wir den Fall, wo der Befehl schlägt fehl, was zu einem Fehler.
In der Unix-shell-version, die Zuordnung zu "theValue" immer noch Auftritt, alle vorherigen Wert ersetzt wird durch einen leeren Wert.
In der Windows-batch-version, es ist die "for" - Befehl mit der Fehlermeldung, und das "do" - Klausel wird nie erreicht -- also alle vorherigen Wert "theValue" beibehalten werden.
Erhalten Sie weitere Unix-ähnliche Semantik in Windows-batch-Skript verwenden, müssen Sie sicherstellen, dass die Zuweisung erfolgt:
Andernfalls zu klar den Wert der Variablen bei der Konvertierung eines Unix-Skript Windows-batch kann eine Ursache von subtilen Fehlern.
InformationsquelleAutor der Antwort Jonathan Headland
Hier ist, wie ich es mache, wenn ich eine Datenbank Abfrage, die Ergebnisse in meine batch-Datei:
Der Taste wird in Zeile 2: "set /p" setzt den Wert von "Ergebnis" den Wert der ersten Linie (nur) in "__ - Abfrage.tmp", über die "<" Umleitung Betreiber.
InformationsquelleAutor der Antwort lotsoffreetime
Nur so, ich habe es gesehen wird, wenn Sie dies tun:
ver ist die version-Befehl für Windows und auf meinem system, die es produziert:
Quelle
InformationsquelleAutor der Antwort Jesse Dearing