Het commando: "SET" staat aan Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. beschikbaar
De voorbeelden voor het commando "SET"
De
`SET`opdracht in Windows Command Prompt wordt gebruikt om omgevingsvariabelen te maken, bekijken of wijzigen. Hier zijn enkele voorbeelden van het gebruik van de
`SET`-Commando:
Voorbeeld 1: Maak een nieuwe omgevingsvariabele:
SET NIEUW_VARIABLE=Inhoud
Beschrijving: Met deze opdracht wordt een nieuwe omgevingsvariabele gemaakt met de naam
`NIEUW_VARIABLE`en de waarde
`Inhoud`.
Voorbeeld 2: Een bestaande omgevingsvariabele weergeven:
SET BESTAANDE_VARIABLE
Beschrijving: Deze opdracht toont de waarde van de omgevingsvariabele
`BESTAANDE_VARIABLE`bij.
Voorbeeld 3: Toon alle omgevingsvariabelen:
SET
Omschrijving: Door binnen te komen
`SET`zonder een specifieke variabele worden alle omgevingsvariabelen en hun waarden weergegeven.
Voorbeeld 4: Variabele verwijderen:
SET NIEUW_VARIABLE=
Beschrijving: Dit is de waarde van de omgevingsvariabele
`NIEUW_VARIABLE`verwijderd.
Voorbeeld 5: Een variabele gebruiken in een batchbestand:
ECHO %NIEUW_VARIABLE%
Beschrijving: Deze opdracht retourneert de waarde van de omgevingsvariabele
`NIEUW_VARIABLE`uit. In batchbestanden is de syntaxis
`%Variable%`gebruikt om toegang te krijgen tot de waarde van een omgevingsvariabele.
Voorbeeld 6: Gebruikersinvoer opslaan in een variabele:
SET /P GEBRUIKERSINVOER=Voer iets in:
Beschrijving: Deze opdracht vraagt de gebruiker iets in te voeren en slaat de invoer op in de omgevingsvariabele
`GEBRUIKERSINVOER`.
Er zijn veel geavanceerde opties en functies van de
`SET`commando, inclusief stringwijzigingen, het gebruik van omgevingsvariabelen in batchscripts en meer. Over binnenkomen
`SET /?`in de opdrachtprompt krijgt u een lijst met beschikbare opties en meer gedetailleerde informatie.
"SET" Fragment uit Microsoft Windows Help
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
CMD.EXE omgevingsvariabelen instellen, verwijderen of weergeven.
SET [variabele=[tekenreeks]]
variabele De naam van de omgevingsvariabele.
tekenreeks Een reeks tekens die u aan de variabele wilt
toewijzen.
SET zonder parameters geeft de huidige omgevingsvariabelen weer.
Als opdrachtextensies zijn ingeschakeld, verandert de opdracht
SET
als volgt:
Als de opdracht SET wordt aangeroepen met alleen een variabele-
naam,
zal deze de waarde weergeven van alle variabelen waarvan het
voorvoegsel
overeenkomt met de naam die is gegeven aan de opdracht SET.
Bijvoorbeeld:
SET P
geeft alle variabelen weer die beginnen met de letter P.
De opdracht SET stelt het ERRORLEVEL in op 1 als de variabele-
naam
niet wordt gevonden in de actieve omgeving.
Als u de opdracht SET gebruikt, kunt u een is-gelijkteken (=)
niet
gebruiken in de naam van een variabele.
Twee nieuwe schakelopties zijn toegevoegd aan de opdracht SET:
SET /A expressie
SET /P variabele=[promptString]
Schakeloptie /A bepaalt dat de tekenreeks rechts van het is-
gelijkteken een
numerieke expressie is die wordt geëvalueerd. De expressie-
evaluator is
vrij eenvoudig en ondersteunt de volgende bewerkingen, in
aflopende volgorde
van voorrang:
() - groepering
* / % - rekenkundige operators
+ - - rekenkundige operators
<< >> - logische verschuiving
& - And per bit
^ - Uitsluitende Or per bit
| - Or per bit
= *= /= %= += -= - toewijzing
&= ^= |= <<= >>=
, - expressie-scheidingsteken
Als u een van de logische of modulus-operators gebruikt, dient u
de
expressietekenreeks tussen aanhalingstekens te zetten. Alle niet-
numerieke
tekenreeksen in de expressie worden behandeld als
omgevingsvariabele-namen
waarvan de waarden worden omgezet naar nummers voordat ze worden
gebruikt.
Als een omgevingsvariabele-naam is opgegeven, maar niet in de
actieve
omgeving is gedefinieerd, wordt de waarde nul gebruikt. Hierdoor
kunt u
rekenen met omgevingsvariabele-waarden zonder alle %-tekens te
hoeven
typen om de waarden op te halen. Als /A wordt uitgevoerd vanaf de
opdrachtregel buiten het opdrachtscript om, wordt de laatste
waarde van
de expressie weergegeven. De toewijzingsoperator vereist een
omgevingsvariabele-naam links van de toewijzingsoperator.
Numerieke
waarden zijn decimale getallen, tenzij ze worden voorafgegaan
door 0x voor
hexadecimale getallen en 0 voor octale getallen. Dus 0x12 is
hetzelfde als
18 of 022. Opmerking: de octale notatie kan verwarrend zijn: 08
en 09 zijn
geen geldige getallen omdat 8 en 9 geen geldige octale cijfers
zijn.
De schakeloptie /P biedt u de mogelijkheid om de waarde van een
variabele
in te stellen op een regel van opgegeven invoer door de
gebruiker. De
opgegeven promptString wordt weergegeven voordat de invoerregel
wordt
gelezen. De promptString kan leeg zijn.
Vervanging van omgevingsvariabelen is als volgt verbeterd:
%PATH:str1=str2%
zal de omgevingsvariabele PATH uitbreiden, waarbij elke 'str1' in
het
uitgebreide resultaat wordt vervangen door 'str2'. 'Str2' kan een
lege
tekenreeks zijn om alle voorkomende 'str1'-tekenreeksen te
verwijderen uit
de uitgebreide uitvoer. 'str1' kan beginnen met een sterretje,
zodat deze
tekenreeks overeenkomt met alles vanaf het begin van de
uitgebreide uitvoer
tot de eerste keer dat het resterende gedeelte van str1 voorkomt.
U kunt ook subtekenreeksen opgeven voor een uitbreiding.
%PATH:~10,5%
zal de omgevingsvariabele PATH uitbreiden en dan alleen de eerste
5
tekens gebruiken die beginnen op het elfde teken (offset 10) van
het
uitgebreide resultaat. Als de lengte niet wordt opgegeven, wordt
de
rest van de variabele-waarde als standaard gebruikt. Als een van
de
cijfers (offset of lengte) negatief is, is het nummer dat wordt
gebruikt
de lengte van de waarde van de omgevingsvariabele, toegevoegd aan
de
opgegeven offset of lengte.
%PATH:~-10%
zal de laatste 10 tekens van de variabele PATH ophalen.
%PATH:~0,-2%
zal alles behalve de laatste twee tekens van de variabele PATH
ophalen.
Ten slotte is ondersteuning voor vertraagde uitbreiding van
omgevingsvariabele toegevoegd. Ondersteuning hiervoor is
standaard
altijd uitgeschakeld, maar kan worden ingeschakeld/uitgeschakeld
via
opdrachtregelparameter /V bij CMD.EXE. Zie hiervoor CMD /?
Vertraagde uitbreiding van omgevingsvariabele is handig voor het
omzeilen
van beperkingen van de huidige uitbreiding die optreedt als een
regel
tekst wordt gelezen, en niet als deze regel wordt uitgevoerd. Het
volgende
voorbeeld geeft het probleem met directe variabele-uitbreiding
weer:
set VAR=ervoor
if "%VAR%" == "ervoor" (
set VAR=erna;
if "%VAR%" == "erna" @echo Het werkt als u dit ziet
)
Bovenstaand voorbeeld zal het bericht nooit laten zien omdat
%VAR% in
BEIDE IF-opdrachten wordt vervangen als de eerste IF-opdracht
wordt gelezen,
omdat deze logisch gezien de inhoud van de IF insluit, wat een
samengestelde
opdracht is. Dus de IF binnen de samengestelde opdracht
vergelijkt in
werkelijkheid 'voorheen' met 'erna', wat nooit gelijk zal zijn.
Ook het
volgende voorbeeld zal niet als verwacht werken:
set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%
Hiermee wordt GEEN lijst met bestanden in de actieve map
samengesteld,
maar wordt alleen de variabele LIST ingesteld op het laatste
gevonden
bestand. Ook hier komt dat omdat de %LIST% slechts één keer wordt
uitgebreid als de FOR-opdracht wordt gelezen, en op dat moment is
de
variabele LIST leeg. Dus de eigenlijke FOR-lus die wordt
uitgevoerd, is:
for %i in (*) do set LIST= %i
waarmee alleen LIST wordt ingesteld op het laatste gevonden
bestand.
Met vertraagde uitbreiding van omgevingsvariabele kunt u een
ander
teken (het uitroepteken) gebruiken om omgevingsvariabelen uit te
breiden
tijdens uitvoering. Als vertraagde uitbreiding van variabelen is
ingeschakeld, kunnen bovenstaande voorbeelden als volgt worden
herschreven
om te werken zoals bedoeld:
set VAR=ervoor
if "%VAR%" == "ervoor" (
set VAR=erna
if "!VAR!" == "erna" @echo Het werkt als u dit ziet
)
set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%
Als opdrachtextensies zijn ingeschakeld, zijn er verschillende
dynamische omgevingsvariabelen die kunnen worden uitgebreid maar
die
niet voorkomen in de lijst met variabelen, zoals weergegeven
door SET. Deze variabele-waarden worden elke keer dynamisch
berekend
als de variabele wordt uitgebreid. Als de gebruiker expliciet een
variabele definieert met een van deze namen, zal die definitie de
onderstaande dynamische variabelen negeren:
%CD% - uitbreiden naar de actieve maptekenreeks.
%DATE% - uitbreiden naar huidige datum met dezelfde indeling als
de opdracht
DATE.
%TIME% - uitbreiden naar huidige tijd met dezelfde indeling als
de opdracht
TIME.
%RANDOM% - uitbreiden naar een willekeurig decimaal getal tussen
0 en 32767.
%ERRORLEVEL% - uitbreiden naar de actieve ERRORLEVEL-waarde.
%CMDEXTVERSION% - uitbreiden naar het actieve versienummer van
opdracht-
processorextensies.
%CMDCMDLINE% - uitbreiden naar de oorspronkelijke opdrachtregel
die de
Opdrachtprocessor heeft aangeroepen.
Belangrijke informatie, tips voor het "SET" commando
Bij gebruik van de
`SET`opdracht in de Windows-opdrachtprompt, zijn er enkele belangrijke aspecten waar u rekening mee moet houden:
1.
Omgevingsvariabelen overschrijven: Als u een omgevingsvariabele heeft met
`SET`Als u een omgevingsvariabele maakt met dezelfde naam als een bestaande omgevingsvariabele, wordt de bestaande variabele overschreven. Zorg ervoor dat u dit van plan bent om ongewenste effecten te voorkomen.
SET BESTAANDE_VARIABLE=Nieuwe waarde
2.
Spaties in waarden: Bij het instellen van waarden met spaties in omgevingsvariabelen is het raadzaam om de waarde tussen dubbele aanhalingstekens te plaatsen. Dit helpt problemen met tolkruimtes te voorkomen.
SET VARIABLE_MET_RUIMTE="Waarde met spaties"
3.
Geef alle omgevingsvariabelen weer: Voer gewoon in
`SET`zonder specifieke variabele worden alle omgevingsvariabelen en hun waarden weergegeven. Dit kan handig zijn om ervoor te zorgen dat uw wijzigingen zijn aangebracht zoals verwacht.
SET
4.
Omgevingsvariabelen instellen in batchscripts: Als u omgevingsvariabelen in een batchscript instelt, moet u er rekening mee houden dat de variabele later in het script toegankelijk zal zijn
`%Variable%`hij volgt.
SET NIEUW_VARIABLE=Inhoud
ECHO %NIEUW_VARIABLE%
5.
Gebruikersinvoer met`SET /P`: Als jij
`SET /P`Zorg ervoor dat u bij gebruikersinvoer de gebruiker duidelijk vraagt en duidelijke instructies geeft om verwarring te voorkomen.
SET /P GEBRUIKERSINVOER=Voer iets in:
6.
Hoofdlettergevoeligheid: Houd er rekening mee dat omgevingsvariabelen doorgaans niet hoofdlettergevoelig zijn. Het betekent dat
`%Variable%`En
`%variable%`toegang tot hetzelfde.
Deze tips moeten ervoor zorgen dat u
`SET`-Gebruik commando's effectief en veilig.