Omgevingsvariabelen gebruiken op de opdrachtregel. Instellen commando en parameter referentie

& nbsp & nbsp Team SET wordt gebruikt om omgevingsvariabelen op de Windows-opdrachtregel te bekijken en te wijzigen. Omgevingsvariabelen zijn variabelen waarvan de geaccepteerde waarden kenmerkend zijn voor de omgeving waarin het huidige programma wordt uitgevoerd - systeembestandspaden, hardware-informatie, gebruikersmappen, enz. De waarden van omgevingsvariabelen worden gegenereerd tijdens het Windows-opstartproces, gebruikersregistratie in het systeem, tijdens de uitvoering van individuele processen of met behulp van de opdracht SET... Om de waarde te zien die door een bepaalde variabele wordt geaccepteerd, kunt u de opdracht gebruiken:

SET variabele
PAD INSTELLEN- toon de waarde van een variabele PAD
Gebruik de opdracht om een ​​nieuwe variabele te maken of de waarde van een bestaande te wijzigen:

SET variabele = string

variabele- De naam van de omgevingsvariabele.
lijn- De tekenreeks die aan de opgegeven variabele moet worden toegewezen.

SET MijnNaam = Vasya- stel de waarde van een variabele in Mijn naam

SET pad = C: \ progs;% pad%- verander de waarde van de variabele PAD door aan het begin van de regel toe te voegen C: \ progs

De waarde die door de variabele wordt geaccepteerd, is beschikbaar voor verwerking in batchbestanden bij gebruik van de naam, ingesloten in procenttekens - % ... Bijvoorbeeld een opdracht om tekst op het ECHO-display weer te geven in de vorm:

ECHO-datum- geeft het woord "datum" weer en het commando
ECHO% datum% zal de waarde van de variabele weergeven datum, d.w.z. de huidige datum in besturingssysteemformaat.

Opdracht SET zonder parameters wordt gebruikt om de huidige waarden van omgevingsvariabelen weer te geven.

ALLUSERSPROFILE = C: \ ProgramData
APPDATA = C: \ Gebruikers \ Usr \ AppData \ Roaming
CommonProgramFiles = C: \ Program Files \ Common Files
COMPUTERNAAM = TEST7
ComSpec = C: \ windows \ system32 \ cmd.exe
FP_NO_HOST_CHECK = NEE
THUISDRIVE = C:
HOMEPATH = \ Gebruikers \ Usr
LOCALAPPDATA = C: \ Gebruikers \ Usr \ AppData \ Lokaal
INLOGSERVER = \\ TEST7
NUMBER_OF_PROCESSORS = 2
OS = Windows_NT
Pad = C: \ windows \ system32 C: \ windows;
PATHEXT = .COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH; .MSC
PROCESSOR_ARCHITECTURE = x86
PROCESSOR_IDENTIFIER = x86 Family 15 Model 3 Stepping 4, GenuineIntel
PROCESSOR_LEVEL = 15
PROCESSOR_REVISION = 0304
ProgramData = C: \ ProgramData
ProgramFiles = C: \ Program Files
PROMPT = $ P $ G
PSModulePath = C: \ windows \ system32 \ Windows PowerShell \ v1.0 \ Modules \
OPENBAAR = C: \ Gebruikers \ Openbaar
Systeemschijf = C:
SystemRoot = C: \ windows
TEMP = C: \ Gebruikers \ Usr \ AppData \ Lokaal \ Temp
TMP = C: \ Gebruikers \ Usr \ AppData \ Lokaal \ Temp
GEBRUIKERSDOOMEIN = test7
GEBRUIKERSNAAM = Gebruiker
GEBRUIKERSPROFIEL = C: \ Gebruikers \ Gebruiker
windir = C: \ windows

Naast de variabelen die in de lijst worden weergegeven, zijn er bij het aanroepen van de opdracht SET nog andere waarvan de waarden dynamisch worden gewijzigd:

% CD%- neemt de waarde van de huidige map.
% DATUM%- neemt de waarde van de huidige datum.
% TIJD%- neemt de waarde van de huidige tijd aan.
% WILLEKEURIG%- de waarde van het willekeurige getal in het bereik tussen 0 en 32767.
% FOUTNIVEAU%- de huidige waarde van ERRORLEVEL, een speciale variabele die wordt gebruikt als een teken van het resultaat van de uitvoering van het programma.
% CMDEXTVERSIE% de waarde van de uitgebreide versie van de opdrachtverwerking van CMD.EXE.
% CMDCMDLINE%- breidt uit naar de oorspronkelijke opdrachtregel die de opdrachtprocessor aanriep.

Als bij het aanroepen van het SET-commando slechts een deel van de naam wordt opgegeven, wordt een lijst met variabelen weergegeven waarvan de naam begint met de opgegeven tekenreeks. Bijvoorbeeld:

SET U- geeft de waarden weer van alle variabelen waarvan de naam begint met "U".

De opdracht SET ondersteunt twee extra opties:

SET / Een uitdrukking

SET / P variabele =

De schakeloptie / A geeft aan dat de tekenreeks rechts van het gelijkteken een numerieke uitdrukking is waarvan de waarde wordt geëvalueerd. De expressieprocessor is heel eenvoudig en ondersteunt de volgende bewerkingen, in aflopende volgorde van prioriteit:

Als u logische of binaire operatoren gebruikt, moet u de uitdrukkingsreeks tussen aanhalingstekens plaatsen. Alle niet-numerieke tekenreeksen in de uitdrukking worden behandeld als namen van omgevingsvariabelen, waarvan de waarden worden geconverteerd naar numerieke waarden voordat ze worden gebruikt. Als een variabele met de opgegeven naam niet in het systeem is gedefinieerd, wordt deze vervangen door een null-waarde. Hiermee kunt u rekenkundige bewerkingen uitvoeren op de waarden van omgevingsvariabelen zonder dat u% tekens hoeft te typen om de waarden te krijgen. Als de opdracht SET / A wordt aangeroepen vanaf de opdrachtregel in plaats van vanuit een batchbestand, wordt de uiteindelijke waarde van de uitdrukking afgedrukt. Links van een toewijzingsoperator moet de naam van de omgevingsvariabele staan. Numerieke waarden worden beschouwd als decimale waarden, tenzij ze worden voorafgegaan door een voorvoegsel:

0x- voor hexadecimale getallen
0 - voor octale getallen.

Een voorbeeld van het gebruik van voorvoegsels:

SET / A REZ = 0xA + 012
ECHO% REZ%

In dit commandobestand is de waarde van de variabele REZ wordt berekend door 10 op te tellen in hexadecimaal (0xA) en 10 in octaal (012).

Met de / P-schakelaar kunt u de waarde van een variabele instellen voor een invoerreeks die door de gebruiker is ingevoerd. Toont de opgegeven prompt promptString voordat de ingevoerde tekenreeks wordt gelezen. De promptString mag leeg zijn. Met deze toets kunt u een dialoog met de gebruiker organiseren in een batchbestand:

@ECHO UIT
SET / P NAME = Voer gebruikersnaam in:
SET / P pass = Voer wachtwoord in:
ECHO Gebruikersnaam -% NAAM%, wachtwoord -% PASS%

In batchbestanden is het vaak nodig om te werken met een deel van de waarde die wordt geaccepteerd door een variabele, waarvoor substitutiewaarden worden gebruikt:

variabele: string1 = string2- vervangt in de ontvangen waarde van de variabele lijn 1 Aan lijn 2

Het volgende batchbestand gebruikt de vervanging van het puntteken door het streepje in de waarde van de variabele die overeenkomt met de huidige datum:

@ECHO UIT
stel tm =% DATUM%
ECHO Datum1 =% tm%
SET tm =% DATUM:. = -%
ECHO Datum2 =% tm%

Om een ​​deel van de waarde te markeren die door een variabele wordt geaccepteerd, wordt de volgende constructie gebruikt:

variabele: ~ x, y- waar x- het aantal tekens dat moet worden overgeslagen vanaf het begin van de regel, en ja- het aantal tekens dat als waarde van de variabele wordt gebruikt.

Het volgende voorbeeld gebruikt de weergave van de huidige tijd zonder seconden en fracties van seconden (alleen de eerste 5 tekens van de standaardwaarde van de variabele TIME):

@ECHO UIT
stel tm =% TIJD%
ECHO Tijd1 =% tm%
SET tm =% TIJD: ~ 0,5%
ECHO Tijd2 =% tm%

Als de waarde ja(lengte) niet is opgegeven, wordt de waarde van de variabele die tot het einde van de regel blijft, gebruikt. Als de waarde ja negatief, dan wordt een deel van de variabele waardereeks vanaf het einde gebruikt. Het vorige voorbeeld kan worden gewijzigd om te specificeren dat 6 tekens vanaf het einde worden weggegooid in de ontvangen tijdwaarde:

@ECHO UIT
stel tm =% TIJD%
ECHO Tijd1 =% tm%
SET tm =% TIJD: ~ 0, -6%
ECHO Tijd2 =% tm%

Misschien is het gebruik van het aantal spaties niet gespecificeerd en wordt een negatief getal gebruikt, dan maakt de geaccepteerde waarde deel uit van de variabele vanaf het einde van de regel:

% PAD: ~ -10%- extraheert de laatste 10 tekens van de PATH-variabele

U kunt de null-waarde weglaten en het vervangingsformaat behouden:

% PAD: ~ 0, -2% gelijkwaardig aan % PAD: ~, -2%

Bij het gebruik van omgevingsvariabelen in batchbestanden is er een bepaalde beperking die samenhangt met het feit dat de toegewezen waarde ongewijzigd blijft wanneer deze wordt gewijzigd binnen de groep opdrachten die tussen haakjes zijn gespecificeerd, bijvoorbeeld in opdrachten INDIEN of VOOR... Om deze beperking te omzeilen, start u de opdrachtprocessor met de parameter / V: ON en gebruikt u uitroeptekens in plaats van procenttekens om de waarde te krijgen die door de variabele wordt geaccepteerd. Bovendien is het mogelijk om de standaardstart van de opdrachtprocessor te gebruiken, maar met de lokale activering van deze modus met de opdracht:

Het verschil in de resultaten van het gebruik van variabele waarden wordt vrij duidelijk aangetoond door het volgende opdrachtbestand:


@ECHO UIT
stel VAR = voor
if "% VAR%" == "voor" (
stel VAR = na
als "! VAR!" == "na" @echo Percentage =% VAR%, vraagteken =!VAR!

Opdracht stel VAR = na wordt uitgevoerd binnen een subroutine die wordt begrensd door haakjes en, als u het commando verwijdert Setlocal inschakelenVertraagde uitbreiding of niet gebruiken om de waarde van een variabele te krijgen VAR uitroeptekens, blijft de waarde hetzelfde (wat was ingesteld voordat de subroutine werd ingevoerd). Hetzelfde probleem wordt waargenomen wanneer de waarde van de variabele binnen de opdrachtlus verandert VOOR... Als u bijvoorbeeld de bestanden in de huidige map wilt weergeven, werkt een dergelijk batchbestand niet:

stel LIST = . in
voor %% i in (*) zet LIST =% LIST% %% i
echo% LIJST%

Variabele waarde LIJST binnen de lus wordt niet gewijzigd. Om dit te laten gebeuren, moet het batchbestand als volgt worden gewijzigd:

Setlocal inschakelenVertraagde uitbreiding
stel LIST = . in
voor %% i in (*) stel LIST =!LIST! %% l
echo% LIJST%

Nu, de waarde van de variabele LIJST binnen de lus VOOR zal veranderen, waarbij achtereenvolgens de waarden van de bestandsnamen worden genomen, gescheiden door een spatie ( stel LIST =!LIJST! %% l)

02/12/15 21,1K

Waarom is de wereld zo chaotisch? Omdat de beheerder van ons systeem zijn taken is vergeten. Of ben gewoon de lijst met cmd-commando's uit onze wereld kwijt. Hoewel dit een enigszins originele kijk op de bestaande orde der dingen is, weerspiegelt het toch een deel van de waarheid die we nodig hebben: met behulp van de opdrachtregel kun je gemakkelijk dingen op je computer ordenen:

Wat is de opdrachtregel?

De opdrachtregel is de eenvoudigste tool om het besturingssysteem van uw computer te beheren. De besturing wordt uitgevoerd met behulp van een aantal gereserveerde opdrachten en een reeks tekens van het teksttoetsenbord zonder tussenkomst van de muis ( in Windows-besturingssysteem).

Op UNIX-gebaseerde systemen kan de muis worden gebruikt met de opdrachtregel.

Sommige commando's kwamen naar ons vanuit MS-DOS. De opdrachtregel wordt ook wel de console genoemd. Het wordt niet alleen gebruikt om het besturingssysteem te beheren, maar ook om algemene programma's te beheren. Meestal bevat deze reeks opdrachten de meest zelden gebruikte.

Het voordeel van het gebruik van standaard cmd-opdrachten is dat het een minimum aan systeembronnen gebruikt. En dit is belangrijk in geval van nood, wanneer alle kracht van de computer, op de een of andere manier, erbij betrokken is.

In cmd is de mogelijkheid geïmplementeerd om volledige batchbestanden uit te voeren en te maken, wat een bepaalde volgorde is van uitvoering van een aantal opdrachten (scripts). Hierdoor kunnen ze worden gebruikt om de uitvoering van bepaalde taken te automatiseren ( accountbeheer, gegevensarchivering en meer).

De Windows-opdrachtshell voor het manipuleren en omleiden van opdrachten naar specifieke hulpprogramma's en besturingssysteemtools is de Cmd.exe-interpreter. Het laadt de console en leidt commando's om in een voor het systeem begrijpelijk formaat.

Werken met de opdrachtregel in het Windows-besturingssysteem

Er zijn verschillende manieren om de console in Windows op te roepen:


Beide methoden omvatten het starten van de console als de huidige gebruiker. Dat wil zeggen, met alle rechten en beperkingen die worden opgelegd aan zijn rol in het besturingssysteem. Om cmd met beheerdersrechten uit te voeren, selecteert u het programmapictogram in het menu Start en selecteert u het juiste item in het contextmenu:


Nadat u het hulpprogramma heeft gestart, kunt u in de console hulpinformatie krijgen over de opdrachten en hun indeling. Om dit te doen, moet u de helpfunctie van de operator invoeren en op "Enter" drukken:

Basiscommando's voor het werken met bestanden en mappen

De meest gebruikte commando's zijn:

  • RENAME - hernoemen van mappen en bestanden. Opdrachtsyntaxis:

HERNAME | REN [station / pad] origineel bestand / mapnaam | uiteindelijke bestandsnaam
Voorbeeld: HERNAME C: UsershomeDesktoptost.txt test.txt

  • DEL (ERASE) - Gebruikt om alleen bestanden te verwijderen, geen mappen. De syntaxis is:

DEL | ERASE [verwerkingsmethode] [bestandsnaam]
Voorbeeld: Del C: UsershomeDesktoptest.txt / P

De verwerkingsmethode betekent een speciale vlag waarmee u een bepaalde voorwaarde kunt implementeren bij het verwijderen van een bestand. In ons voorbeeld schakelt de "P"-vlag de weergave van het toestemmingsdialoogvenster in voor het verwijderen van elk bestand:


Raadpleeg de technische documentatie van het Windows-besturingssysteem voor meer informatie over de mogelijke waarden van de parameter "verwerkingsmethode".

  • MD - hiermee kunt u een map maken op het opgegeven pad. Syntaxis:

MD [station:] [pad]
Voorbeeld:
MD C: UsershomeDesktoptest1test2

Het voorbeeld maakt een submap test2 aan in de map test1. Als een van de hoofdmappen van het pad niet bestaat, wordt deze ook gemaakt:

  • RD ( RMDIR) - verwijdert een specifieke map of alle mappen in het opgegeven pad. Syntaxis:

RD | RMDIR [processing_key] [station / pad]
Voorbeeld:
rmdir / s C: UsershomeDesktoptest1test2

In het voorbeeld wordt de vlag s gebruikt, waardoor de volledige directorytak die in het pad is opgegeven, wordt verwijderd. Gebruik daarom de opdracht rmdir niet onnodig met deze verwerkingsschakelaar.

In de volgende sectie zullen we netwerk-cmd-opdrachten nader bekijken.

Netwerkopdrachten

Met de opdrachtregel kunt u niet alleen het bestandssysteem van de pc besturen, maar ook de netwerkmogelijkheden. De netwerkopdrachten van de console bevatten een groot aantal operators om het netwerk te bewaken en te testen. De meest relevante zijn:

  • ping - de opdracht wordt gebruikt om de mogelijkheden van de netwerkverbinding van een pc te controleren. Een bepaald aantal pakketten wordt naar de externe computer gestuurd en vervolgens naar hen teruggestuurd. Er wordt rekening gehouden met de verzendtijd van het pakket en het verliespercentage. Syntaxis:

ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v type] [-r count] [-s count] [(-j hostlist | - k nodelist)] [-w int] [destination_PC_name]

Voorbeeld van een opdrachtimplementatie:
ping voorbeeld.microsoft.com
ping –w 10000 192.168.239.132

In het laatste voorbeeld van een cmd ping-opdracht wordt een verzoek verzonden naar de ontvanger met het opgegeven IP-adres. Het wachtinterval tussen pakketten is 10.000 (10 sec). Standaard is deze parameter ingesteld op 4000:

  • tracert - dient om het netwerkpad naar de gespecificeerde bron te bepalen door een speciaal echobericht via het protocol te verzenden
  • ICMP (Control Message Protocol). Na het uitvoeren van de opdracht met parameters, wordt een lijst weergegeven met alle routers waar het berichtpad doorheen gaat. Het eerste item in de lijst is de eerste router vanaf de kant van de gevraagde bron.

De syntaxis voor de opdracht tracer cmd is:
tracert [-d] [-h max_ hops] [-j hostlijst] [-w afstand] [target_source_name]
Implementatie voorbeeld:
tracert -d -h 10 microsoft.com

In het voorbeeld wordt de route naar de opgegeven resource getraceerd. Dit verhoogt de snelheid van de bewerking door de parameter d te gebruiken, die voorkomt dat de opdracht probeert toestemming te krijgen om IP-adressen te lezen. Het aantal overgangen (sprongen) is beperkt tot 10 met behulp van de ingestelde waarde van de parameter h. Het aantal sprongen is standaard 30:


afsluiten [(-l | -s | -r | -a)] [-f] [-m [\ PC_name]] [-t xx] [-c "berichten"] [-d [u] [p]: xx: jj]
Voorbeeld:
uitschakeling / s / t 60 / f / l / m \ 191.162.1.53

De externe pc (m) met het opgegeven IP-adres (191.162.1.53) wordt na 60 seconden (t) uitgeschakeld (s). Hierdoor worden alle toepassingen (f) en de sessie van de huidige gebruiker (l) geforceerd.

Met omgevingsvariabelen die in batchbestanden (opdrachtbestanden) worden gebruikt, kunt u de noodzaak van absolute directorypaden omzeilen. Als we bijvoorbeeld niet van tevoren de letter van het systeemstation weten, kunnen we altijd de variabele gebruiken % systeemschijf%, die de letter retourneert van het station waarop het besturingssysteem is geïnstalleerd. Er worden ook variabelen gebruikt om de code te optimaliseren - een herhaaldelijk herhaalde parameter (bijvoorbeeld een registersleutel) kan een korte variabele worden toegewezen en gebruikt. In dit artikel worden de verschillende technieken voor het werken met variabelen in detail besproken, en hoe u nieuwe variabelen kunt wijzigen en maken. Laten we nu alles in volgorde bespreken.

Classificatie van omgevingsvariabelen

Samenvatting

De Windows Command Shell (cmd.exe) is een zeer krachtig hulpmiddel om met het systeem te werken. Batchbestanden kunnen een behoorlijk aantal taken automatiseren, daarom worden ze vaak gebruikt om Windows automatisch te installeren. Door handig gebruik te maken van variabelen in batchbestanden kunt u een groot aantal problemen oplossen. Het werken met de shell wordt efficiënter en tegelijkertijd wordt de code van batchbestanden vereenvoudigd. Andere voorbeelden van het gebruik van variabelen vindt u op de website of forumpagina's. Alle voorbeelden die in dit artikel worden gebruikt, zijn overgenomen uit de scripts van de deelnemers, waarvoor veel dank.

Terminologie

Commandoshell Is een apart softwareproduct dat zorgt voor directe communicatie tussen de gebruiker en het besturingssysteem. De gebruikersinterface van CLI-tekst biedt een omgeving waarin op tekst gebaseerde toepassingen en hulpprogramma's worden uitgevoerd.

cmd.exe- een opdrachtinterpreter die de Windows-opdrachtshell gebruikt om de ingevoerde opdracht te vertalen in een formaat dat het systeem begrijpt.

Teamsessie kan worden gestart als lancering cmd.exe of door een batchbestand uit te voeren. Met andere woorden, de huidige opdrachtshell wordt gemaakt. Dienovereenkomstig beëindigt het verlaten van deze shell (bijvoorbeeld het beëindigen van een batchbestand) de opdrachtsessie.

Gebruikerssessie(gebruikerssessie) begint vanaf het moment dat de gebruiker inlogt (log on) en eindigt wanneer de gebruiker uitlogt (log off).

Binnen de opdrachtbestanden kunt u werken met de zogenaamde omgevingsvariabelen (of omgevingsvariabelen), die elk zijn opgeslagen in RAM, hun eigen unieke naam hebben en de waarde ervan een tekenreeks is. Standaard omgevingsvariabelen worden automatisch geïnitialiseerd tijdens het opstartproces van het besturingssysteem. Dergelijke variabelen zijn bijvoorbeeld WINDIR, dat de locatie van de Windows-directory specificeert, TEMP, dat het pad specificeert naar de directory voor het opslaan van tijdelijke Windows-bestanden, of PATH, dat het systeempad (zoekpad) opslaat, dat wil zeggen de lijst met mappen waarin het systeem moet zoeken naar uitvoerbare bestanden of gedeelde bestanden (bijvoorbeeld dynamische bibliotheken). Daarnaast kunt u uw eigen omgevingsvariabelen declareren in batchbestanden met de opdracht SET.

De waarde van een variabele verkrijgen

Om de waarde van een specifieke omgevingsvariabele te krijgen, moet u de naam van deze variabele in% tekens insluiten. Bijvoorbeeld:

@ECHO OFF CLS REM Variabele aanmaken MyVar SET MyVar = Hallo REM Variabele wijzigen SET MyVar =% MyVar%! ECHO De waarde van de variabele MyVar:% MyVar% REM De variabele MyVar verwijderen SET MyVar = ECHO De waarde van de variabele WinDir:% WinDir%

Wanneer u zo'n opdrachtbestand uitvoert, wordt de volgende regel op het scherm weergegeven:

De waarde van de variabele MyVar: Hallo! De waarde van de WinDir-variabele: C: \ WINDOWS

Variabelen converteren naar strings

U kunt enige manipulatie uitvoeren met omgevingsvariabelen in batchbestanden. Ten eerste kunnen ze worden aaneengeschakeld (gelijmd). Om dit te doen, hoeft u alleen maar de waarden naast elkaar te schrijven van de variabelen die moeten worden verbonden in de SET-opdracht. Bijvoorbeeld,

SET A = Eén SET B = Twee SET C =% A %% B%

Nadat deze opdrachten in het bestand zijn uitgevoerd, is de waarde van de variabele C de tekenreeks "Div2". U moet het +-teken niet gebruiken voor aaneenschakeling, omdat het gewoon als een symbool wordt opgevat. Bijvoorbeeld, na het starten van het bestand met de volgende inhoud:

SET A = Eén SET B = Twee SET C = A + B ECHO-variabele C =% C% SET D =% A% +% B% ECHO-variabele D =% D%

er verschijnen twee regels op het scherm:

Variabele C = A + B Variabele D = Eén + Twee

Ten tweede kunnen substrings worden geëxtraheerd uit een omgevingsvariabele met behulp van de constructie % variabelenaam: ~ n1, n2%, waarbij het getal n1 de offset definieert (het aantal tekens dat moet worden overgeslagen) vanaf het begin (als n1 positief is) of vanaf het einde (als n1 negatief is) van de corresponderende omgevingsvariabele, en het nummer n2 is het aantal tekens toe te wijzen (als n2 positief is) of het aantal laatste tekens in de variabele dat niet zal worden opgenomen in de geselecteerde substring (als n2 negatief is). Als er slechts één negatieve -n-optie is opgegeven, worden de laatste n tekens geëxtraheerd. Als de variabele% DATE% bijvoorbeeld de tekenreeks "21-09-2007" opslaat (symbolische weergave van de huidige datum onder bepaalde regionale instellingen), dan na het uitvoeren van de volgende opdrachten

SET dd1 =% DATUM: ~ 0.2% SET dd2 =% DATUM: ~ 0, -8% SET mm =% DATUM: ~ -7.2% SET jjjj =% DATUM: ~ -4%

nieuwe variabelen hebben de volgende waarden: % dd1% = 21,% dd2% = 21,% mm% = 09,% jjjj% = 2007.

Ten derde kunt u de procedure voor het vervangen van substrings uitvoeren met behulp van de constructie % variabelenaam: s1 = s2%(dit retourneert een tekenreeks waarbij elke keer dat de subtekenreeks s1 voorkomt in de corresponderende omgevingsvariabele wordt vervangen door s2). Bijvoorbeeld, na het uitvoeren van de commando's

SET a = 123456 SET b =% a: 23 = 99%

variabele b zal de string "199456" opslaan. Als de s2-parameter niet is opgegeven, wordt de s1-substring verwijderd uit de uitvoerstring, d.w.z. na het uitvoeren van het commando

SET a = 123456 SET b =% a: 23 =%

de variabele b zal de string "1456" opslaan.

Bewerkingen op variabelen als getallen

Wanneer uitgebreide opdrachtverwerking is ingeschakeld (deze modus wordt standaard gebruikt in Windows XP), is het mogelijk om de waarden van omgevingsvariabelen als getallen te behandelen en er rekenkundige berekeningen mee uit te voeren. Gebruik hiervoor het SET-commando met de / A-schakelaar. Hier is een voorbeeld van een batchbestand add.bat dat twee getallen toevoegt die zijn gespecificeerd als opdrachtregelparameters en het resulterende bedrag op het scherm weergeeft:

@ECHO OFF REM Variabele M slaat de som op van SET / A M =% 1 +% 2 ECHO Som van% 1 en% 2 is gelijk aan% M% REM Wis variabele M SET M =

Wijzigingen in variabelen lokaal

Alle wijzigingen die zijn aangebracht in de omgevingsvariabelen in een batchbestand met behulp van de opdracht SET, worden opgeslagen nadat het bestand is voltooid, maar zijn alleen van kracht binnen het huidige opdrachtvenster. Het is ook mogelijk om wijzigingen in omgevingsvariabelen in een batchbestand te lokaliseren, dat wil zeggen om automatisch de waarden van alle variabelen te herstellen in de vorm waarin ze waren voordat dit bestand werd gestart. Hiervoor worden twee commando's gebruikt: SETLOCAL en ENDLOCAL. De opdracht SETLOCAL definieert het begin van het instelgebied van de lokale omgevingsvariabele. Met andere woorden, omgevingsveranderingen die worden gemaakt nadat SETLOCAL is uitgevoerd, zijn lokaal voor het huidige batchbestand. Elke SETLOCAL-opdracht moet een bijbehorende ENDLOCAL-opdracht hebben om de vorige waarden van de omgevingsvariabelen te herstellen. Omgevingsveranderingen die zijn aangebracht nadat het ENDLOCAL-commando is uitgevoerd, zijn niet langer lokaal voor het huidige batchbestand; hun vorige waarden worden niet hersteld na voltooiing van de uitvoering van dit bestand.

De shell-omgeving Cmd.exe wordt gedefinieerd door variabelen die het gedrag van de shell en het besturingssysteem bepalen. U kunt het gedrag van de shell-omgeving of de gehele besturingssysteemomgeving definiëren door twee soorten omgevingsvariabelen te gebruiken: systeem en lokaal. Systeemomgevingsvariabelen bepalen het gedrag van de wereldwijde besturingssysteemomgeving. Lokale omgevingsvariabelen bepalen het gedrag van de omgeving in een bepaald exemplaar van Cmd.exe.

Systeemomgevingsvariabelen worden vooraf gedefinieerd door het besturingssysteem en zijn beschikbaar voor alle Windows XP-processen. Alleen gebruikers met beheerdersrechten kunnen deze variabelen wijzigen. Deze variabelen worden het meest gebruikt in aanmeldingsscripts.

Lokale omgevingsvariabelen zijn alleen beschikbaar als de gebruiker voor wie ze zijn gemaakt, is aangemeld. Hive lokale variabelen HKEY_CURRENT_USER zijn alleen geschikt voor de huidige gebruiker, maar definiëren het gedrag van de wereldwijde besturingssysteemomgeving.

De volgende lijst presenteert de verschillende soorten variabelen in aflopende volgorde van prioriteit.

  1. Ingebouwde systeemvariabelen
  2. Hive-systeemvariabelen HKEY_LOCAL_MACHINE
  3. Hive lokale variabelen HKEY_CURRENT_USER
  4. Alle omgevingsvariabelen en paden worden gespecificeerd in het bestand Autoexec.bat.
  5. Alle omgevingsvariabelen en paden worden gespecificeerd in het login-script (indien aanwezig).
  6. Variabelen die interactief worden gebruikt in een script of batchbestand

In een opdrachtshell neemt elk exemplaar van Cmd.exe de omgeving van de bovenliggende toepassing over. Daarom kunt u de variabelen in de nieuwe Cmd.exe-omgeving wijzigen zonder de omgeving van de bovenliggende toepassing te beïnvloeden.

De volgende tabel bevat een lijst met systeem- en lokale omgevingsvariabelen voor Windows XP.

Variabele

Beschrijving

% ALLUSERSPROFIEL%

lokaal

Retourneert de locatie van het profiel Alle gebruikers.

lokaal

Retourneert de standaardlocatie van toepassingsgegevens.

lokaal

Retourneert het pad naar de huidige map.

lokaal

Retourneert de opdrachtreeks waarmee dit exemplaar van Cmd.exe is gestart.

systemisch

Haalt het versienummer van de huidige opdrachtprocessorextensies op.

systemisch

Retourneert de naam van de computer.

systemisch

Retourneert het pad naar de uitvoerbare shell.

systemisch

Retourneert de huidige gegevens. Gebruikt hetzelfde formaat als het commando datum / t... Gemaakt door de opdracht Cmd.exe.

systemisch

Retourneert de foutcode van de laatst gebruikte opdracht. Een waarde die niet nul is, duidt meestal op een fout.

systemisch

Retourneert de stationsnaam van het lokale werkstation dat is gekoppeld aan de basismap van de gebruiker. Het wordt ingesteld op basis van de locatie van de hoofddirectory. De basismap van de gebruiker wordt gespecificeerd in de module Lokale gebruikers en groepen.

systemisch

Retourneert het volledige pad naar de basismap van de gebruiker. Het wordt ingesteld op basis van de locatie van de hoofddirectory. De basismap van de gebruiker wordt gespecificeerd in de module Lokale gebruikers en groepen.

systemisch

Retourneert het netwerkpad naar de gedeelde thuismap van de gebruiker. Het wordt ingesteld op basis van de locatie van de hoofddirectory. De basismap van de gebruiker wordt gespecificeerd in de module Lokale gebruikers en groepen.

lokaal

Retourneert de naam van de domeincontroller die de huidige sessie heeft geverifieerd.

% NUMBER_OF_PROCESSORS%

systemisch

Specificeert het aantal processors dat op de computer is geïnstalleerd.

systemisch

Retourneert de naam van het besturingssysteem. Bij gebruik van Windows 2000 wordt de naam van het besturingssysteem weergegeven als Windows_NT.

systemisch

Specificeert het zoekpad voor uitvoerbare bestanden.

systemisch

Retourneert een lijst met bestandsextensies die door het besturingssysteem als uitvoerbaar worden beschouwd.

% PROCESSOR_ARCHITECTURE%

systemisch

Retourneert de processorarchitectuur. Waarden: x86, IA64.

% PROCESSOR_IDENTFIER%

systemisch

Retourneert een beschrijving van de processor.

% PROCESSOR_LEVEL%

systemisch

Retourneert het modelnummer van de processor die op de computer is geïnstalleerd.

% PROCESSOR_REVISION%

systemisch

Retourneert het revisienummer van de processor.

lokaal

Retourneert opdrachtregelopties voor de huidige interpreter. Gemaakt door de opdracht Cmd.exe.

systemisch

Retourneert een willekeurig decimaal getal tussen 0 en 32767. Gegenereerd door de opdracht Cmd.exe.

systemisch

Retourneert de naam van het station met de hoofdmap van Windows XP (dat wil zeggen de systeemmap).

systemisch

Retourneert de locatie van de Windows XP-systeemmap.

Systeem en gebruiker

Retourneert de standaard tijdelijke mappen die worden gebruikt door toepassingen die toegankelijk zijn voor ingelogde gebruikers. Sommige toepassingen vereisen de variabele TEMP, andere vereisen de variabele TMP.

systemisch

Geeft de huidige tijd terug. Gebruikt hetzelfde formaat als het commando tijd / t... Gemaakt door de opdracht Cmd.exe.

lokaal

Retourneert de naam van het domein dat de lijst met gebruikersaccounts bevat.

lokaal

Retourneert de naam van de momenteel ingelogde gebruiker.

lokaal

Retourneert de locatie van het profiel voor de huidige gebruiker.

systemisch

Retourneert de locatie van de directory van het besturingssysteem.