Kommandot: "SET" är på Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. tillgänglig
Exemplen för kommandot "SET"
De
`SET`kommando i Windows Kommandotolk används för att skapa, visa eller ändra miljövariabler. Här är några exempel på hur du använder
`SET`-Kommando:
Exempel 1: Skapa en ny miljövariabel:
SET NY_VARIABLE=Innehåll
Beskrivning: Detta kommando skapar en ny miljövariabel med namnet
`NY_VARIABLE`och värdet
`Innehåll`.
Exempel 2: Visa en befintlig miljövariabel:
SET EXISTERANDE_VARIABLE
Beskrivning: Detta kommando visar värdet på miljövariabeln
`EXISTERANDE_VARIABLE`på.
Exempel 3: Visa alla miljövariabler:
SET
Beskrivning: Genom att gå in
`SET`utan en specifik variabel visas alla miljövariabler och deras värden.
Exempel 4: Ta bort variabel:
SET NY_VARIABLE=
Beskrivning: Detta är värdet på miljövariabeln
`NY_VARIABLE`raderade.
Exempel 5: Använda en variabel i en batchfil:
ECHO %NY_VARIABLE%
Beskrivning: Detta kommando returnerar värdet på miljövariabeln
`NY_VARIABLE`ut ur. I batchfiler syntaxen
`%Variable%`används för att komma åt värdet på en miljövariabel.
Exempel 6: Spara användarindata till en variabel:
SET /P ANVÄNDARINFORMATION=Ange något:
Beskrivning: Detta kommando uppmanar användaren att ange något och lagrar indata i miljövariabeln
`ANVÄNDARINFORMATION`.
Det finns många avancerade alternativ och funktioner
`SET`kommando, inklusive strängändringar, användning av miljövariabler i batchskript och mer. Om att gå in
`SET /?`i kommandotolken får du en lista över tillgängliga alternativ och mer detaljerad information.
"SET" Utdrag från Microsoft Windows Hjälp
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Visar, ändrar eller tar bort miljövariabler i Kommandotolken.
SET [variabel=[text]]
variabel Anger namn på miljövariabeln.
text Anger den text som tilldelas variabeln.
Skriv SET utan parametrar om du vill visa aktuella
miljövariabler.
Om kommandotilläggen är aktiverade ändras kommandot SET enligt
följande:
Om du anropar kommandot SET med bara ett variabelnamn (inget
likhetstecken
eller värde) visas värdet för alla variabler vars prefix matchar
namnet som
angavs. Till exempel:
SET P
visar alla variabler som börjar med bokstaven P
Kommandot SET anger ERRORLEVEL till 1 om variabelnamnet inte kan
hittas
i den aktuella miljön.
Kommandot SET tillåter inte att ett likhetstecken ingår i
namnet på en variabel.
Två nya växlar har skapats för kommandot SET:
SET /A uttryck
SET /P variabel=[ledtext]
Växeln /A anger att strängen till höger om likhetstecknet är ett
numeriskt uttryck som är utvärderat. Uttrycksutvärderaren
är förhållandevis enkel och stöder följande åtgärder, i fallande
prioritetsordning:
() - gruppering
! ~ - - enställiga operatorer
* / % - aritmetiska operatorer
+ - - aritmetiska operatorer
<< >> - logisk skiftning
& - logiskt och (bit-per-bit)
^ - logiskt exklusivt eller (bit-per-bit)
| - logiskt eller (bit-per-bit)
= *= /= %= += -= - tilldelning
&= ^= |= <<= >>=
, - uttrycksavgränsare
Om du använder några av de logiska operatorerna eller modulus-
operatorn,
måste du omsluta uttryckssträngen i citattecken. Alla icke-
numeriska
strängar i uttrycket behandlas som miljövariabelnamn vars värden
är
konverterade till tal innan de används. Om ett miljövariabelnamn
angetts
men inte är definierat i den aktuella miljön, används värdet noll
istället.
Detta innebär att du kan utföra aritmetik med miljövariabelvärden
utan
att du måste skriva tecknen % för att få deras värden. Om SET /A
körs från
kommandoraden (utanför en kommandofil), visas uttryckets
slutgiltiga värde.
Tilldelningsoperatorn kräver ett miljövariabelnamn till vänster
om
tilldelningsoperatorn. Numeriska värden är alltid decimaltal,
såvida de inte
föregås av 0x för hexadecimala tal och 0 för oktala tal. 0x12 är
alltså
identiskt med 18 som är identiskt med 022. Observera att syntaxen
för oktala
tal kan vara förvirrande: 08 och 09 är inte giltiga tal eftersom
8 och 9
inte är giltiga oktala siffror.
Växeln /P ger dig möjlighet att tilldela ett värde till en
variabel
från en indatarad som angetts av användaren. Visar en angiven
ledtext
innan indataraden läses. Ledtexten kan vara tom.
Miljövariabelersättning har utökats enligt följande:
%PATH:str1=str2%
expanderar miljövariabeln PATH. Alla förekomster av "str1"
ersätts
i den expanderade strängen med "str2". "str2" kan vara tom
sträng. Alla förekomster av "str1" tas då bort från den
expanderade
strängen. "str1" kan börja med en asterisk. Då matchas allting
från början av den expanderade strängen till den första
förekomsten
av den återstående delen av "str1".
Det går även att ange understrängar för expandering.
%PATH:~10,5%
skulle expandera miljövariabeln PATH och bara använda 5 tecken
med
början på det 11:e (förskjutning 10) tecknet i den expanderade
strängen. Om ingen längd angetts, används den återstående delen
av strängen som standard. Om ett av talen (förskjutning eller
längd)
är negativt, används längden på miljövariabeln adderat till den
angivna förskjutningen eller längden.
%PATH:~-10%
expanderar de sista 10 tecknen i miljövariabeln PATH.
%PATH:~0,-2%
expanderar alla utan de sista 2 tecknen i miljövariabeln PATH.
Slutligen har stöd för fördröjd expandering av miljövariabler
lagts
till. Som standard är detta stöd alltid inaktiverat. Det kan dock
aktiveras/inaktiveras med hjälp av växeln /V för kommandot
CMD.EXE.
Skriv CMD /? för mer information.
Fördröjd expandering av miljövariabler är användbart om du vill
komma runt
begränsningarna i den nuvarande expanderingen som inträffar när
en textrad
läses (inte när den körs). Följande exempel klargör problemet
med omedelbar expandering av variabler:
set VAR=innan
if "%VAR%" == "innan" (
set VAR=efter
if "%VAR%" == "efter" @echo Om du ser detta så fungerar
det
)
Ovanstående exempel skulle aldrig visa meddelandet, eftersom
%VAR% ersätts
i båda IF-satserna när den första IF-satsen läses. Det beror på
att den
inkluderar IF-satsens kropp, som är ett sammansatt uttryck. IF-
satsen
inuti det sammansatta uttrycket jämför egentligen "innan" med
"efter" och
kommer därför aldrig vara sann. Följande exempel kommer inte
heller att
fungera som förväntat:
set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%
Problemet är att ovanstående uttryck INTE kommer att skapa en
fillista
för den aktuella katalogen. I stället kommer variabeln LIST att
tilldelas
den sista hittade filen.
Precis som i det tidigare exemplet beror detta på att %LIST% bara
expanderas en gång (när FOR-satsen läses). Vid den tidpunkten är
variabeln LIST tom.
Resultatet blir att följande FOR-sats körs:
for %i in (*) do set LIST= %i
vars enda funktion är att den tilldelar variabeln LIST den senast
hittade filen.
Fördröjd expandering av miljövariabler gör att du kan använda ett
annat
tecken (utropstecknet) för expandering av miljövariabler under
körning.
Om fördröjd expandering av variabler är aktiverat, kommer
ovanstående
exempel att fungera som avsett:
set VAR=innan
if "%VAR%" == "innan" (
set VAR=innan
if "!VAR!" == "efter" @echo Om du ser detta fungerar det
)
set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%
Om kommandotilläggen är aktiverade finns det flera dynamiska
miljövariabler som kan expanderas men som inte visas i
variabellistan
som visas med kommandot SET. Dessa variabelvärden beräknas
dynamiskt varje gång variabelns värde expanderas.
Om användaren explicit definierar en variabel med det här namnet
kommer
den definitionen att åsidosätta den dynamiska som beskrivs nedan:
%CD% - expanderas till strängen för aktuell katalog.
%DATE% - expanderas till aktuellt datum (samma format som
kommandot DATE).
%TIME% - expanderas till aktuell tid (samma format som kommandot
TIME).
%RANDOM% - expanderas till ett slumpmässigt decimaltal mellan 0
och 32767.
%ERRORLEVEL% - expanderas till den aktuella ERRORLEVEL-nivån.
%CMDEXTVERSION% - expanderas till versionsnumret för de aktuella
kommandotolkstilläggen.
%CMDCMDLINE% - expanderas till den ursprungliga kommandoraden som
anropade kommandotolken.
Viktig information, tips för kommandot "SET"
När du använder
`SET`kommandot i Windows kommandotolk, finns det några viktiga aspekter att notera:
1.
Åsidosättande av miljövariabler: Om du har en miljövariabel med
`SET`Om du skapar en miljövariabel med samma namn som en befintlig miljövariabel kommer den befintliga variabeln att skrivas över. Se till att du tänker göra detta för att undvika oönskade effekter.
SET EXISTERANDE_VARIABLE=Nytt värde
2.
Mellanslag i värden: När du ställer in värden med mellanslag i miljövariabler, är det lämpligt att sätta värdet i dubbla citattecken. Detta hjälper till att undvika problem med att tolka utrymmen.
SET VARIABLE_MED_PLATS="Värde med mellanslag"
3.
Visa alla miljövariabler: Ange bara
`SET`utan specifik variabel visar alla miljövariabler och deras värden. Detta kan vara till hjälp för att säkerställa att dina ändringar gjordes som förväntat.
SET
4.
Ställa in miljövariabler i batchskript: Om du ställer in miljövariabler i ett batchskript bör du notera att variabeln kommer att nås senare i skriptet
`%Variable%`han följer.
SET NY_VARIABLE=Innehåll
ECHO %NY_VARIABLE%
5.
Användarinmatning med`SET /P`: Om du
`SET /P`för användarinput, se till att du tydligt uppmanar användaren och ger tydliga instruktioner för att undvika förvirring.
SET /P ANVÄNDARINFORMATION=Ange något:
6.
Skiftlägeskänslighet: Observera att miljövariabler vanligtvis inte är skiftlägeskänsliga. Det betyder att
`%Variable%`och
`%variable%`komma åt samma.
Dessa tips bör säkerställa att du
`SET`-Använd kommandon effektivt och säkert.