Kommandoen: "SET" er tændt Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. tilgængelig
Eksempler på kommandoen "SET"
Det
`SET`kommando i Windows Kommandoprompt bruges til at oprette, se eller ændre miljøvariabler. Her er nogle eksempler på brug af
`SET`-Kommando:
Eksempel 1: Opret en ny miljøvariabel:
SET NY_VARIABLE=Indhold
Beskrivelse: Denne kommando opretter en ny miljøvariabel med navnet
`NY_VARIABLE`og værdien
`Indhold`.
Eksempel 2: Vis en eksisterende miljøvariabel:
SET EKSISTERENDE_VARIABLE
Beskrivelse: Denne kommando viser værdien af miljøvariablen
`EKSISTERENDE_VARIABLE`på.
Eksempel 3: Vis alle miljøvariabler:
SET
Beskrivelse: Ved at indtaste
`SET`uden en specifik variabel vises alle miljøvariabler og deres værdier.
Eksempel 4: Slet variabel:
SET NY_VARIABLE=
Beskrivelse: Dette er værdien af miljøvariablen
`NY_VARIABLE`slettet.
Eksempel 5: Brug af en variabel i en batchfil:
ECHO %NY_VARIABLE%
Beskrivelse: Denne kommando returnerer værdien af miljøvariablen
`NY_VARIABLE`ud af. I batch-filer syntaksen
`%Variable%`bruges til at få adgang til værdien af en miljøvariabel.
Eksempel 6: Gem brugerinput til en variabel:
SET /P BRUGERINDTAG=Indtast noget:
Beskrivelse: Denne kommando beder brugeren om at indtaste noget og gemmer input i miljøvariablen
`BRUGERINDTAG`.
Der er mange avancerede muligheder og funktioner
`SET`kommando, inklusive strengændringer, brug af miljøvariabler i batchscripts og mere. Om at komme ind
`SET /?`i kommandoprompten får du en liste over tilgængelige muligheder og mere detaljeret information.
"SET" Uddrag fra Microsoft Windows Hjælp
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Viser, definerer eller fjerner miljøvariable.
SET [variabel=[streng]]
variabel Angiver navnet på en miljøvariabel.
streng Angiver en række tegn, som skal knyttes til
variablen.
Skriv SET uden parametre for at vise de aktuelle miljøvariable.
Hvis kommandoudvidelserne er aktiveret, ændres SET på følgende
måde:
Kommandoen SET vil, hvis den startes med et variabelnavn uden
lighedstegn eller værdi, vise værdien af alle variabler, hvis
præfiks
svarer til navnet, som kommandoen SET fik angivet. Eksempelvis
vil:
SET P
vise alle variabler, der begynder med bogstavet 'P'
Kommandoen SET indstiller ERRORLEVEL til 1, hvis variabelnavnet
ikke
findes i det aktuelle miljø.
Kommandoen SET tillader ikke, at et lighedstegn er en del af
navnet på
en variabel.
To nye parametre er føjet til kommandoen SET:
SET /A udtryk
SET /P variabel=[promptstreng]
Parameteren /A angiver, at strengen til højre for lighedstegnet
er et numerisk udtryk, som evalueres. Funktionen til evaluering
af
udtryk er temmelig enkel og understøtter følgende funktioner i
faldende
prioritetsrækkefølge:
() - gruppering
! ~ - - monadiske operatorer
* / % - aritmetiske operatorer
+ - - aritmetiske operatorer
<< >> - logisk skift
& - bitvis og
^ - bitvis eksklusiv eller
| - bitvis eller
= *= /= %= += -= - tildeling
&= ^= |= <<= >>=
, - udtryksseparator
Hvis du anvender nogle af de logiske operatorer eller
modulusoperatorerne,
skal strengen med udtrykket angives i anførselstegn. Alle ikke-
numeriske
strenge i udtrykket behandles som miljøvariabelnavne, hvis
værdier
konverteres til tal, før de anvendes. Hvis et miljøvariabelnavn
angives uden at være defineret i det aktuelle miljø, anvendes
værdien
nul. Dette giver dig mulighed for at udføre aritmetiske
beregninger med
miljøvariabelværdier uden at skulle skrive de mange %-tegn for at
få
deres værdier. Hvis SET /A udføres fra kommandolinjen uden for et
kommandoscript, viser det udtrykkets endelige værdi.
Tildelingsoperatoren
kræver et miljøvariabelnavn til venstre for tildelingsoperatoren.
Numeriske værdier er decimaltal, medmindre præfikset 0x for
hexadecimale
tal eller 0 for oktale tal er angivet. Således bliver 0x12 lig
med 18, som
er lig med 022. Bemærk, at oktal notation kan være forvirrende.
08 og 09 er
ikke gyldige tal, fordi 8 og 9 ikke er gyldige oktale cifre.
Parameteren /P giver dig mulighed for at indstille værdien af en
variabel
til en linje med input angivet af brugeren. Viser den angivne
promptstreng,
før inputlinjen læses. Promptstreng kan være tom.
Erstatningen af miljøvariabler udvides på følgende måde:
%PATH:str1=str2%
udvider miljøvariablen PATH og erstatter enhver forekomst af
"str1" i det
udvidede resultat med "str2". "str2" kan være den tomme streng,
hvilket
sletter alle forekomster af "str1" fra det udvidede output.
"str1" kan
begynde med en stjerne og svarer i det tilfælde til alt fra
begyndelsen
af det udvidede output til den første forekomst af den resterende
del af
str1.
Det kan også angive understrenge til en udvidelse.
%PATH:~10,5%
udvider miljøvariablen PATH, og bruger derefter kun de 5 tegn,
der begynder
ved det 11. tegn (forskyd 10) i det udvidede resultat. Hvis
længden ikke
er angivet, vil standarden være resten af variabelværdien. Hvis
et af
tallene (forskyd eller forlæng) er negativt, vil det tal, der
anvendes,
være længden af miljøvariabelværdien føjet til den angivne
forskydning
eller forlængelse.
%PATH:~-10%
udtrækker de sidste 10 tegn i variablen PATH.
%PATH:~0,-2%
udtrækker alle undtagen de to sidste tegn i variablen PATH.
Endelig er der tilføjet støtte for forsinket udvidelse af
miljøvariabler.
Denne støtte er som standard altid deaktiveret, men kan
aktiveres/deaktiveres
vha. CMD.EXE-kommandolinjeparameteren /V. Se CMD /?
Forsinket udvidelse af miljøvariabler er nyttig for at undgå
begrænsningerne
i den aktuelle udvidelse, som forekommer, når en tekstlinje
læses, ikke når
den udføres. Følgende eksempel illustrerer problemet med
midlertidig
variabeludvidelse:
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "%VAR%" == "after" @echo Det virker, hvis du kan læse
dette
)
Ovenstående virker dog ikke, fordi %VAR% i begge IF-sætninger
erstattes,
når den første IF-sætning læses, da den logisk inkluderer
indholdet af IF,
der er en sammensat sætning. Så et IF i en sammensat sætning
sammenligner
i virkeligheden "before" med "after", som aldrig kan være ens. På
samme
måde vil eksemplet i det følgende ikke virke som forventet:
set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%
fordi der IKKE vil bliver oprettet en liste over filer i den
aktuelle mappe,
i stedet indstilles variablen LIST til den sidst fundne fil. Igen
skyldes
dette, at %LIST% udvides én gang, når FOR-sætningen læses, og på
dette
tidspunkt er variablen LIST tom.
Den faktiske FOR-løkke, der udføres, er således:
for %i in (*) do set LIST= %i
der bliver ved med at indstille LIST til den sidst fundne fil.
Med forsinket udvidelse af miljøvariablen får du mulighed for at
bruge
et andet tegn (udråbstegn) til at udvide miljøvariablerne på
udførelsestidspunktet. Hvis forsinket udvidelse af variablen er
aktiveret,
skal eksemplerne ovenfor skrives på følgende måde for at fungere
efter
hensigten:
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo Det virker, hvis du kan læse
dette
)
set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%
Hvis kommandoudvidelserne er aktiveret, er der flere dynamiske
miljøvariabler, der kan udvides, men de vises ikke på listen med
variabler, der vises med SET. Disse variabelværdier beregnes
dynamisk,
hver gang værdien af variablen udvides. Hvis brugeren eksplicit
definerer variablen med et af disse navne, tilsidesætter denne
definition den dynamiske definition, som beskrives nedenfor:
%CD% - udvides til den aktuelle mappestreng.
%DATE% - udvider den aktuelle dato vha. det samme format
som
kommandoen DATE.
%TIME% - udvider det aktuelle klokkeslæt vha. det samme
format
som kommandoen TIME.
%RANDOM% - udvider et vilkårligt decimaltal mellem 0 og
32767.
%ERRORLEVEL% - udvider den aktuelle værdi af ERRORLEVEL
%CMDEXTVERSION% - udvider det aktuelle versionsnummer for
udvidelser til kommandofortolker.
%CMDCMDLINE% - udvider den oprindelige kommandolinje, der
startede
kommandofortolkeren.
Vigtig information, tip til kommandoen "SET"
Ved brug af
`SET`kommando i Windows kommandoprompt, er der nogle vigtige aspekter at bemærke:
1.
Tilsidesættende miljøvariabler: Hvis du har en miljøvariabel med
`SET`Hvis du opretter en miljøvariabel med samme navn som en eksisterende miljøvariabel, vil den eksisterende variabel blive overskrevet. Sørg for, at du har til hensigt at gøre dette for at undgå uønskede effekter.
SET EKSISTERENDE_VARIABLE=Ny værdi
2.
Mellemrum i værdier: Når du indstiller værdier med mellemrum i miljøvariabler, er det tilrådeligt at sætte værdien i dobbelte anførselstegn. Dette hjælper med at undgå problemer med at tolke rum.
SET VARIABLE_MED_PLADS="Værdi med mellemrum"
3.
Vis alle miljøvariabler: Indtast blot
`SET`uden specifik variabel viser alle miljøvariabler og deres værdier. Dette kan være nyttigt for at sikre, at dine ændringer blev foretaget som forventet.
SET
4.
Indstilling af miljøvariabler i batchscripts: Hvis du indstiller miljøvariabler i et batchscript, skal du bemærke, at variablen vil blive tilgået senere i scriptet
`%Variable%`han følger efter.
SET NY_VARIABLE=Indhold
ECHO %NY_VARIABLE%
5.
Brugerinput med`SET /P`: Hvis du
`SET /P`for brugerinput skal du sørge for tydeligt at spørge brugeren og give klare instruktioner for at undgå forvirring.
SET /P BRUGERINDTAG=Indtast noget:
6.
Scase-sensitivitet: Bemærk, at miljøvariabler typisk ikke skelner mellem store og små bogstaver. Det betyder at
`%Variable%`og
`%variable%`få adgang til det samme.
Disse tips skal sikre, at du
`SET`-Brug kommandoer effektivt og sikkert.