Der Befehl: "SET" ist auf Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. verfügbar
Die Beispiele zum Befehl "SET"
Der
`SET`-Befehl in der Windows-Eingabeaufforderung wird verwendet, um Umgebungsvariablen zu erstellen, anzuzeigen oder zu ändern. Hier sind einige Beispiele für die Verwendung des
`SET`-Befehls:
Beispiel 1: Eine neue Umgebungsvariable erstellen:
SET NEUE_VARIABLE=Inhalt
Beschreibung: Dieser Befehl erstellt eine neue Umgebungsvariable mit dem Namen
`NEUE_VARIABLE` und dem Wert
`Inhalt`.
Beispiel 2: Eine bestehende Umgebungsvariable anzeigen:
SET EXISTIERENDE_VARIABLE
Beschreibung: Dieser Befehl zeigt den Wert der Umgebungsvariable
`EXISTIERENDE_VARIABLE` an.
Beispiel 3: Alle Umgebungsvariablen anzeigen:
SET
Beschreibung: Durch Eingabe von
`SET` ohne spezifische Variable werden alle Umgebungsvariablen und ihre Werte angezeigt.
Beispiel 4: Variable löschen:
SET NEUE_VARIABLE=
Beschreibung: Hier wird der Wert der Umgebungsvariable
`NEUE_VARIABLE` gelöscht.
Beispiel 5: Variable in einer Batch-Datei verwenden:
ECHO %NEUE_VARIABLE%
Beschreibung: Dieser Befehl gibt den Wert der Umgebungsvariable
`NEUE_VARIABLE` aus. In Batch-Dateien wird die Syntax
`%Variable%` verwendet, um auf den Wert einer Umgebungsvariable zuzugreifen.
Beispiel 6: Benutzereingabe in eine Variable speichern:
SET /P BENUTZEREINGABE=Geben Sie etwas ein:
Beschreibung: Dieser Befehl fordert den Benutzer auf, etwas einzugeben, und speichert die Eingabe in der Umgebungsvariable
`BENUTZEREINGABE`.
Es gibt viele erweiterte Optionen und Funktionen des
`SET`-Befehls, einschließlich Modifikationen von Zeichenketten, Verwendung von Umgebungsvariablen in Batch-Skripten und mehr. Über die Eingabe von
`SET /?` in der Eingabeaufforderung erhältst du eine Liste der verfügbaren Optionen und detailliertere Informationen.
"SET" Auszug aus der Microsoft Windows-Hilfe
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINDOWS>
Setzt oder löscht Umgebungsvariablen für CMD.EXE, oder zeigt sie an.
SET [Variable=[Zeichenfolge]]
Variable Bezeichnet den Namen der Umgebungsvariablen.
Zeichenfolge Eine Zeichenfolge, die der Variable zugewiesen werden soll.
Der Befehl SET ohne Parameter zeigt die aktuellen Umgebungsvariablen an.
Wenn die Befehlserweiterungen aktiviert sind, wird SET folgendermaßen
verändert:
Wenn der SET-Befehl mit nur einem Variablennamen aufgerufen wird, d.h.
ohne Gleichheitszeichen oder einem anderen Wert, wird der Inhalt aller
Variablen angezeigt, deren Namen mit eben diesem Buchstaben beginnen. So
werden durch
SET P
alle Variablen angezeigt, die mit dem Buchstaben 'P' beginnen.
Der SET-Befehl legt den ERRORLEVEL mit 1 fest, wenn der Variablenname nicht
in der aktuellen Umgebung gefunden wird.
Der SET-Befehl erlaubt kein Gleichheitszeichen als Bestandteil eines
Variablennamens.
Dem SET-Befehl wurden zwei neue Optionen hinzugefügt:
SET /A Ausdruck
SET /P Variable=[EingabeaufforderungZeichenfolge]
Die /A-Option gibt an, dass die Zeichenfolge rechts vom Gleichheitszeichen
ein nummerischer Ausdruck ist, der ausgewertet wird. Das Auswertungsprogramm
des Ausdrucks unterstützt dabei die folgenden Vorgänge, entsprechend ihrer
Anordnung mit abnehmendem Vorrang:
() - Gruppierung
! ~ - - monäre Operatoren
* / % - arithmetische Operatoren
+ - - arithmetische Operatoren
<< >> - logische Verschiebung
& - bitweise UND
^ - bitweise exklusives ODER
| - bitweise ODER
= *= /= %= += -= - Zuordnung
&= ^= |= <<= >>=
, - Trennzeichen für Ausdrücke
Wenn Sie einen der arithmetischen oder Moduloperatoren verwenden, müssen
Sie die Zeichenfolge für den Ausdruck in Anführungszeichen setzen. Alle
nicht-nummerischen Zeichenfolgen im Ausdruck werden als Zeichenfolgen von
Umgebungsvariablen behandelt, deren Werte vor der Verwendung in Zahlen
konvertiert werden. Wenn eine Umgebungsvariable angegeben wird, die nicht
definiert ist, wird für diese der Wert Null verwendet. Somit können Sie
mit Umgebungsvariablen Berechnungen vornehmen, ohne %-Zeichen einzugeben,
um deren Werte zu erhalten. Wenn der Befehl SET /A von der Befehlszeile,
d.h. außerhalb eines Befehlsskripts ausgeführt wird, dann zeigt er
den endgültigen Wert des Ausdrucks an. Der Zuordnungsoperator erfordert
eine Umgebungsvariable auf der linken Seite des Operators. Nummerische Werte
stellen immer Dezimalzahlen dar, es sei denn, sie haben ein Präfix 0x für
hexadezimale Zahlen, 0b für binäre Zahlen oder 0 für oktale Zahlen. Damit
stellt 0x12 dieselbe Zahl wie 18 oder 022 dar. Beachten Sie, dass die oktale
Schreibweise verwirrend sein kann: So sind 08 und 09 keine gültigen Zahlen,
da 8 und 9 keine erlaubten oktalen Ziffern sind.
Die Option /P ermöglicht es, einer Variablen eine Eingabezeile des Benutzers
zuzuweisen und zeigt die angegebene Eingabeaufforderung an, bevor die
Eingabezeile gelesen wird. Die Eingabeaufforderung kann leer sein.
Das Ersetzen von Umgebungsvariablen wurde folgendermaßen erweitert:
%PATH:str1=str2%
Dies erweitert die PATH-Umgebungsvariable, wobei jede Instanz von "str1" im
erweiterten Ergebnis mit "str2" ersetzt wird. "str2" kann die leere
Zeichenfolge sein, um alle Instanzen von "str1" aus der erweiterten Ausgabe zu
löschen. Wenn "str1" mit einem Sternchen beginnt, steht "str1" für alles
zwischen dem Anfang der erweiterten Ausgabe bis zum ersten Auftreten des
übrigen Abschnitts von "str1".
%PATH:~10,5%
Dies erweitert die PATH-Umgebungsvariable und verwendet dann nur fünf
Zeichen ab dem elften Zeichen (Offset=10) des erweiterten Ergebnisses. Wenn die
Länge nicht angegeben ist, wird der Rest des Variablenwerts verwendet.
Wenn eine der Zahlen (Offset oder Länge) negativ ist, dann wird der angegebene
Wert der Länge des Umgebungsvariablenwerts hinzugefügt.
%PATH:~-10%
extrahiert die letzten 10 Zeichen der Variable PATH.
%PATH:~0,-2%
extrahiert alle, außer den letzten 2, Zeichen der Variable PATH.
Die Unterstützung der verzögerten Erweiterung von Umgebungsvariablen wurde
hinzugefügt. Standardmäßig ist sie deaktiviert. Sie kann mit der
Befehlszeilenoption /V von CMD.EXE aktiviert/deaktiviert werden.
Siehe CMD /?
Die verzögerte Erweiterung von Variablen verbessert die Möglichkeiten der
Variablenerweiterung. Bisher wurden die Variablen beim Lesen des Texts, und
nicht bei dessen Ausführung, erweitert. Das folgende Beispiel zeigt ein
Problem, das dabei auftritt:
set VAR=vorher
if "%VAR%" == "vorher" (
set VAR=nachher;
if "%VAR%" == "nachher" @echo Es funktioniert!
)
Die Meldung würde nie angezeigt, weil %VAR% in beiden IF-Befehlen
beim Lesen des ersten IF-Befehls erweitert wird, weil es logisch zu diesem
gehört. Daher vergleicht der zweite IF-Befehl "vorher" mit "nachher" was nie
gleich sein kann. Auch das folgende Beispiel funktioniert nicht wie erwartet:
set LISTE=
for %i in (*) do set LISTE=%LISTE% %i
echo %LISTE%
Es wird KEINE Liste der Dateien im aktuellen Verzeichnis erstellt, stattdessen
erhält LISTE den Namen der letzten Datei als Wert. Dies ist der Fall, weil
%LISTE% nur einmal beim Lesen des IF-Befehls erweitert wird. Zu diesem
Zeitpunkt ist LISTE leer.
Die FOR-Schleife, die tatsächlich ausgeführt wird, lautet:
for %i in (*) do set LISTE= %i
Hiermit wird der Variablen LISTE immer wieder der letzte Dateiname
zugewiesen.
Die verzögerte Erweiterung von Umgebungsvariablen erlaubt es, eine
Umgebungsvariable, unter Verwendung eines weiteren Zeichens (dem
Ausrufezeichen), zur Laufzeit zu erweitern. Mit aktivierter verzögerter
Erweiterung von Umgebungsvariablen können obige Beispiele wie folgt geschrieben
werden:
set VAR=vorher
if "%VAR%" == "vorher" (
set VAR=nachher
if "!VAR!" == "nachher" @echo Es funktioniert!
)
set LISTE=
for %i in (*) do set LISTE=!LISTE! %i
echo %LISTE%
Wenn die Befehlserweiterungen aktiviert sind, gibt es mehrere dynamische
Umgebungsvariablen, die zwar erweiterungsfähig sind, aber nicht in der Liste
von Variablen auftauchen, die mit SET angezeigt werden. Diese Variablenwerte
werden bei jeder Werterweiterung der Variable dynamisch berechnet. Falls eine
Variable mit einem dieser Namen definiert wird, dann überschreibt diese
Definition die unten stehende dynamische Definition:
%CD% - expandiert zum aktuellen Verzeichnisnamen.
%DATE% - expandiert zum aktuellen Datum unter Verwendung desselben Formats
wie der DATE-Befehl.
%TIME% - expandiert zur aktuellen Zeit unter Verwendung desselben Formats
wie der TIME-Befehl.
%RANDOM% - expandiert zu einer zufällig gewählten Dezimalzahl
zwischen 0 und 32767.
%ERRORLEVEL% - expandiert zum aktuellen ERRORLEVEL-Wert.
%CMDEXTVERSION% - expandiert zur Versionsnummer der aktuellen Erweiterungen
für den Befehlsinterpreter.
%CMDCMDLINE% - expandiert zur ursprünglichen Befehlszeile, die den
Befehlsinterpreter aufgerufen hat.
Wichtige Informationen, Tipps zum Befehl "SET"
Beim Verwenden des
`SET`-Befehls in der Windows-Eingabeaufforderung gibt es einige wichtige Aspekte zu beachten:
1.
Überschreiben von Umgebungsvariablen: Wenn du eine Umgebungsvariable mit
`SET` erstellst und dabei denselben Namen wie eine bereits vorhandene Umgebungsvariable verwendest, wird die vorhandene Variable überschrieben. Stelle sicher, dass du dies beabsichtigst, um unerwünschte Effekte zu vermeiden.
SET BESTEHENDE_VARIABLE=NeuerWert
2.
Leerzeichen in Werten: Wenn du Werte mit Leerzeichen in Umgebungsvariablen setzt, ist es ratsam, den Wert in doppelte Anführungszeichen zu setzen. Dies hilft, Probleme mit der Interpretation von Leerzeichen zu vermeiden.
SET VARIABLE_MIT_LEERZEICHEN="Wert mit Leerzeichen"
3.
Anzeige aller Umgebungsvariablen: Das einfache Eingeben von
`SET` ohne spezifische Variable zeigt alle Umgebungsvariablen und ihre Werte an. Dies kann hilfreich sein, um sicherzustellen, dass deine Änderungen wie erwartet vorgenommen wurden.
SET
4.
Setzen von Umgebungsvariablen in Batch-Skripten: Wenn du Umgebungsvariablen in einem Batch-Skript setzt, solltest du beachten, dass der Zugriff auf die Variable später im Skript durch
`%Variable%` erfolgt.
SET NEUE_VARIABLE=Inhalt
ECHO %NEUE_VARIABLE%
5.
Benutzereingabe mit `SET /P`: Wenn du
`SET /P` für die Benutzereingabe verwendest, stelle sicher, dass du den Benutzer klar aufforderst und klare Anweisungen gibst, um Verwirrung zu vermeiden.
SET /P BENUTZEREINGABE=Geben Sie etwas ein:
6.
Groß- und Kleinschreibung: Beachte, dass Umgebungsvariablen in der Regel nicht zwischen Groß- und Kleinschreibung unterscheiden. Das bedeutet, dass
`%Variable%` und
`%variable%` auf dasselbe zugreifen.
Diese Tipps sollen sicherstellen, dass du den
`SET`-Befehl effektiv und sicher verwendest.