| Zweck: | Umgebungsvariablen anzeigen, erstellen, ändern oder löschen |
| Format: | Anzeigemodus: |
SET [/= /D /E /P /S /U /V /X] [wildname]
Definitionsmodus:
SET [/= /A /B /D /M /O /S /U /V /E /RO /R [file...] /T:type | name=value | prompt ]
Löschungsmodus:
SET [/= /D /M /S /U /V /E ] name=
| file | Eine oder mehrere Eingabedateien, aus denen Variablendefinitionen gelesen werden sollen. |
| name | Der Name der Umgebungsvariablen. |
| value | Der neue Wert für die Variable, getrennt vom Namen durch ein Leerzeichen[s]. |
| prompt | Optionale Eingabeaufforderung für die Option /P name=. |
| wildname | Name der anzuzeigenden Variable[n]. Kann einen Platzhalter*enthalten , wenn keine Registrierungsvariablen angezeigt werden. |
Arithmetisch |
Lesen aus Datei(en) |
||
Batch-Variable |
Nur-Lese-Variable |
||
Standard |
System |
||
Umgebung, auch |
/T:Typ |
Variablentyp einstellen |
|
Master-Umgebung |
Benutzer |
||
Pause oder Eingabeaufforderung |
Flüchtig |
||
Nicht überschreiben |
VariableExcludeaußer Kraft setzen |
||
Echo nicht ausgeben /A Ergebnis |
Syntax der Dateivervollständigung:
Die Standard-Syntax für die Vervollständigung von Dateinamen lautet: [/r] * [1] Variablen [2*] *
Verwendung:
Jedes Programm und jeder Befehl erbt eine Umgebung, die eine Liste von Paaren von Variablennamen und -werten ist . Jeder Wert ist eine nicht leere Zeichenkette (d.h. er muss mindestens ein Zeichen enthalten). Viele Programme verwenden Einträge in der Umgebung, um ihre eigenen Aktionen zu ändern. TCC selbst verwendet mehrere Umgebungsvariablen.
Wenn Sie einfach den SET-Befehl ohne Optionen oder Parameter eingeben, werden alle Namen und Werte aller derzeit definierten Variablen in der Umgebung angezeigt. Normalerweise sehen Sie einen Eintrag namens PATH, einen Eintrag namens CMDLINE und alle anderen Umgebungsvariablen, die Sie und Ihre Programme festgelegt haben:
[c:\] set
PATH=C:\;C:\UTIL
CMDLINE=C:\TCMD\TCSTART.CMD
Wenn Sie nur name eingeben und es keine Variable mit diesem Namen gibt, zeigt SET alle Umgebungsvariablen an, deren Namen mit name beginnen . Wenn es zum Beispiel keine Variable pa gibt, zeigt der folgende Befehl alle Variablen an, deren Namen mit pa beginnen:
set pa
Der obige Befehl ist äquivalent zu dem Befehl
set pa*
Wenn es nur einen einzigen Parameter gibt und dieser einen oder mehrere Platzhalterenthält(leider nur * verfügbar), zeigt SET alle passenden Umgebungsvariablen an. Sie können keine Platzhalter verwenden, um die Registrierungsvariablen (/D, /S, /U und /V)anzuzeigen.
Mit der VariableExclude-Variable können Sie Variablen angeben, die von der SET-Anzeige ausgeschlossen werden sollen. So können Sie beispielsweise die Anzeige der Prozessor- und Benutzervariablen unterdrücken:
set VariableExclude=proc*;user*
(Beachten Sie, dass diese Option keinen Einfluss auf das Vorhandensein der Variablen hat, sondern nur darauf, ob sie von einem SET ohne Argumente angezeigt werden).
Um eine Variable zur Umgebung hinzuzufügen, geben Sie SET, ein Leerzeichen, den Variablennamen, ein Gleichheitszeichen und den gewünschten Wert ein:
set mine=c:\finance\myfiles
Der Variablenname und der Text nach dem Gleichheitszeichen werden so belassen, wie Sie sie eingegeben haben. Bei der Suche nach einer Variablen wird die Groß- und Kleinschreibung jedoch ignoriert; zum Beispiel verweisen MyVar, myvar und MYVAR alle auf dieselbe Variable. Wenn die Variable bereits existiert, wird ihr Wert durch den neuen Text ersetzt, den Sie eingegeben haben.
Normalerweise sollten Sie kein Leerzeichen vor oder hinter das Gleichheitszeichen setzen. Ein Leerzeichen vor dem Gleichheitszeichen wird Teil des Namens; ein Leerzeichen nach dem Gleichheitszeichen wird Teil des Wertes.
Nachfolgende Leerzeichen im SET-Befehl werden ignoriert. Um eine Variable mit abschließenden Leerzeichen zu erstellen, verwenden Sie ein Paar Anführungszeichen nach dem Leerzeichen:
set mine=%@repeat[ ,20]``
macht meine 20 Zeichen Leerzeichen.
Wenn Sie SET verwenden, um eine Variable mit dem gleichen Namen wie eine der TCC internen Variablen erstellen, deaktivieren Sie die interne Variable. Wenn Sie später eine Batch-Datei oder einen Alias ausführen, die bzw. der von dieser internen Variable abhängt, funktioniert sie möglicherweise nicht richtig. Sobald Sie Ihre Variable löschen, wird die interne Variable wieder zugänglich.
Um den Inhalt einer Variablen anzuzeigen, geben Sie SET und den Variablennamen ein:
set mine
Sie können Umgebungsvariablen mit dem ESET-Befehl bearbeiten . Um Variablen aus der Umgebung zu entfernen, verwenden Sie UNSET, oder geben Sie SET ein, gefolgt vom Variablennamen und einem Gleichheitszeichen:
set mine=
DerNameder Variablen ist auf maximal 1024 Zeichen begrenzt.
Hinweis: Sie können SET nicht verwenden, um GOSUB-Variablen zu ändern .
Die Größe der Umgebung wird automatisch festgelegt und bei Bedarf erhöht, wenn Sie Variablen hinzufügen.
Registry-Variablen
Windows speichert einige seiner eigenen Variablen in der Registrierung. Dazu gehören Standard-, System-, Benutzer- und flüchtige Variablen. Diese Variablen können mit den Optionen /D, /S, /U und /Vdes SET-Befehls manipuliert werden. Um zum Beispiel den Inhalt der flüchtigen Variable clientname anzuzeigen , verwenden Sie:
set /v clientname
Beachten Sie, dass das Setzen einer Registrierungsvariable mit einer der Optionen /D, /S, /U oder /V die Variable in der lokalen Umgebung nicht setzt, es sei denn, Sie verwenden auch die Option/E.
Benutzervariablen sind benutzerspezifisch, und flüchtige Variablen sind nur für die aktuelle Windows-Sitzung gültig. Seien Sie vorsichtig, wenn Sie Registrierungsvariablen direkt ändern, da sie für verschiedene Windows-Prozesse und -Anwendungen wichtig sein können.
Wenn die Konfigurationsoption Umgebung bei Systemänderung aktualisieren eingestellt ist , TCC die Meldung WM_SETTINGCHANGE und aktualisiert die Umgebung anhand der Registrierungseinträge Benutzer, Flüchtig und System. Die Aktualisierung wird immer dann durchgeführt, wenn TCC die Eingabeaufforderung anzeigt (um zu verhindern, dass sich die Umgebung mitten in einem Befehl ändert).
Array-Variablen
Zusätzlich zu den Umgebungsvariablen wird SET auch verwendet, um Werte für Array-Variablen zusetzen . Um beispielsweise ein 5-zeiliges und 10-spaltiges Array zu definieren, verwenden Sie zunächst SETARRAY:
setarray array1[5,10]
Um die Array-Werte (0-basiert) zu setzen, lautet die Syntax:
set array1[a[,b[,c[,d]]]
Zum Beispiel:
set array1[0,0]=Bob
set array1[0,1]=Bob's Job
Um die Array-Variable zu erweitern:
echo Name is %array[0,0] and job is %array1[0,1]
Optionen:
set /a var=2+2
| /A interpretiert nicht numerische Zeichenfolgen als Namen von Umgebungsvariablen, unabhängig davon, ob ihnen ein Prozentzeichen % vorangestellt ist oder nicht , und ersetzt sie durch die entsprechenden Werte. Zum Beispiel setzt diese Sequenz Y auf 4: |
set x=2
set /a y=x+2
| Sie können @EVALverwenden , um dieselbe Aufgabe zu erfüllen; SET /A ist aus Gründen der Kompatibilität mit CMD enthalten . Im Gegensatz zu @EVALmüssen Sie bei SET /A die>> oder << Shift-Operatoren als Umleitungssymbole deaktivieren, indem Sie SETDOS /X-6 verwenden. |
| /B | Setzt eine Batch-Variable (%1 - %n). Nur gültig, wenn TCC eine Batch-Datei ausführt. Die Batch-Variable %n muss bereits existieren. |
| /E | Wird zusammen mit einer der Optionen /D, /S, /U oder /Vverwendet , werden sowohl die Registrierungsvariable als auch die lokale Umgebungsvariable gesetzt. |
| /P | Bei Verwendung ohne Variablennamen wird nach jeder Bildschirmseite auf das Drücken einer Taste gewartet, bevor die Anzeige fortgesetzt wird. Ihre Optionen an der Eingabeaufforderung werden unter Seiten- und Dateieingabeaufforderungen ausführlich erläutert . |
Bei Verwendung mit einem Variablennamen und einer optionalen Eingabeaufforderung, z. B. set /p myvar=Wert eingeben, wird das CMD-Verhalten emuliert und die Eingabe eines Wertes für die Variable ermöglicht. Dies ist nur aus Kompatibilitätsgründen vorgesehen. Wenn Sie mehr Flexibilität wünschen, verwenden Sie die TCC ESET- oder INPUT-Befehle.
| /R | Liest Umgebungsvariablen aus einer Datei. Dies ist viel schneller als das Laden von Variablen aus einer Batch-Datei mit mehreren SET-Befehlen. Jeder Eintrag in der Datei muss in die Längenbegrenzung der Befehlszeile für TCC. Die Datei hat das gleiche Format wie die SET-Anzeige (d.h. Name=Wert), so dass SET /R als Eingabe eine Datei akzeptieren kann, die durch Umleitung der SET-Ausgabe erzeugt wurde. Die folgenden Befehle speichern zum Beispiel die Umgebungsvariablen in einer Datei und laden sie dann aus dieser Datei wieder: |
set > varlist
set /r varlist
Sie können Variablen aus mehreren Dateien laden, indem Sie die Dateinamen nach dem /R einzeln auflisten.
Wenn Sie eine SET /R-Datei von Hand erstellen und einen Eintrag erstellen müssen, der sich über mehrere Zeilen in der Datei erstreckt, können Sie dies tun, indem Sie jede Zeile (außer der letzten) mit einem Escape-Zeichen abschließen . Sie können diese Methode jedoch nicht verwenden, um die maximale Länge der Befehlszeile zu überschreiten. Sie können auch Kommentarzeilen in die Datei einfügen, indem Sie jede Zeile mit einem Doppelpunkt : beginnen . Sie können auch andere Sonderzeichen verwenden, z. B. Leerzeichen am Ende der Zeile, Umleitungssymbole und Pipe-Symbole(<>|), ohne dass diese Zeichen durch Escape-Zeichen ersetzt werden müssen. Wenn Sie den Wert einer anderen Variablen in value referenzieren (z. B.x=%path;c:\jpsoft), wird die Auswertung dieser Variablen (path im Beispiel) verschoben, bis zu einem späteren Zeitpunkt eine Befehlszeile die aktuelle Variable (x im Beispiel) auswertet, so dass der Befehl echo %x den zum Zeitpunkt der Ausführung vonecho gültigenPfadanzeigt , unabhängig davon, welcher Pfad zum Zeitpunkt der ursprünglichen SET-Definition von x bestand .
Wenn Sie keinen Dateinamen angeben und die Eingabe umgeleitet wird, liest SET /R von stdin.
| /RO | Erstellen Sie eine schreibgeschützte Variable. Sobald Sie die Variable gesetzt haben, können Sie sie nicht mehr ändern oder zurücksetzen. Nur Umgebungsvariablen können schreibgeschützt sein, nicht aber Registry-Variablen oder Array-Variablen. Eine schreibgeschützte Variable wird automatisch von einem ENDLOCALexportiert . |
| /S | Erstellen/Ändern/Löschen einer Systemvariable in der Registrierung (HKLM\System\CurrentControlSet\Control\Session Manager\Environment). |
| /T:type[: "regex"] | Setzen Sie einen Variablentyp. Wenn Sie versuchen, die Variable auf einen nicht kompatiblen Typ zu setzen, gibt SET einen Fehler zurück. Die unterstützten Typen sind: |
| int (oder 1) | Die Variable kann nur 0-9 enthalten |
| dec (oder 2) | Die Variable kann nur 0-9, das Dezimalzeichen und das Tausendertrennzeichen enthalten |
| hex (oder 3) | Die Variable darf nur die Zeichen 0-9 und A-F enthalten. |
| bool (oder 4) | Die Variable kann nur 0 oder 1 enthalten |
| alpha (oder 5) | Die Variable darf nur A-Z und a-z enthalten |
| alnum (oder 6) | Die Variable darf nur A-Z, a-z und 0-9 enthalten |
| regex (oder 7) | Die Variable muss dem angegebenen regulären Ausdruck entsprechen |
| /V | Erstellen/Ändern/Löschen einer flüchtigen Variable in der Registrierung (HKCU\Volatile Environment). |