Hoe u een ingestelde variabele op de opdrachtregel verwijdert. Basis cmd-opdrachten - alleen nuttige informatie

Soms is het nodig om te vormen datetime variabele V cmd/bat scripts ramen op de manier waarop wij het nodig hebben, en niet op de manier waarop het besturingssysteem het ons geeft.

Om deze gegevens bijvoorbeeld toe te voegen aan logbestand, om de tijd of datum van een gebeurtenis vast te leggen, maakt u een bestand aan met een naam die datum- of tijdgegevens moet bevatten (dag, maand, jaar, uur, minuten, seconden, milliseconden). U weet nooit wat onze taken zijn... Laten we onze verbeelding gebruiken :)

In het volgende voorbeeld zien we de uitsplitsing van variabelen volgens de patronen die we nodig hebben.

h- uur 2 cijfers (dat wil zeggen dat het uur wordt ingevoerd het volgende formulier - 01, 02, ..., 09, ... , 12, ... 24)

m - minuten 2 tekens

s - seconden 2 tekens

ms - milliseconden 2 cijfers, om de een of andere reden van 0 tot 99

dd - dag 2 tekenen

mm - maand 2 tekens

jjjj - jaartal 4 cijfers

Voorbeeld van het gebruik van variabelen %DATUM% En %TIJD% in scripts cmd / knuppel Ramen:

@echo uit
stel h=%TIJD in:~0,2%
stel m=%TIJD in:~3,2%
stel s=%TIJD in:~6,2%
stel ms=%TIJD in:~9,2%
stel curtime in=%h%:%m%:%s%:%ms%
stel dd=%DATUM in:~0,2%
stel mm=%DATUM in:~3,2%
stel jjjj=%DATUM:~6,4% in
stel huidige datum in=%dd%-%mm%-%jjjj%
stel curdatetime=%curdate% %curdate% in

echo Huidige tijd is %curdatetime%

In bepaalde Windows-versies Het formaat voor het uitgeven van datum en tijd is anders, dus dit script kan precies werken zoals we nodig hebben.

In theorie kun je delen van variabelen op een vergelijkbare manier nemen, het punt is dat het formaat hier als volgt is:

Het eerste cijfer na: ~ is het nummer van het teken waarvan we de waarde beginnen te nemen, het tweede cijfer is het aantal tekens dat moet worden vastgelegd.

Het blijkt dus dat we elk deel van elke Windows-omgevingsvariabele die voor ons beschikbaar is, voor onze behoeften kunnen gebruiken.

Ik ken de volgende variabelen waarvan we de waarden kunnen krijgen:

Naam
Beschrijving
ALLE GEBRUIKERSPROFIEL Retourneert de plaatsing van het profiel 'Alle gebruikers'.
APP DATA Retourneert de standaardlocatie van toepassingsgegevens.
CD Geeft het pad aan huidige map. Identiek aan het CD-commando zonder argumenten.
CMDCMDLINE De exacte opdracht die wordt gebruikt om de huidige cmd.exe te starten.
CMDEXTVERSIE versie van de huidige opdrachtprocessorextensies.
CommonProgramFiles Locatie van de map "Common Files" (meestal %ProgramFiles%\Common Files)
COMPUTER NAAM computer naam
COMSPEC weg naar uitvoerbaar bestand schelp
DATUM Geeft de huidige datum terug. Gebruikt hetzelfde formaat als de opdracht date /t. Gemaakt door de opdracht Cmd.exe.
FOUTNIVEAU Retourneert de foutcode van de laatst gebruikte opdracht. Een waarde die niet nul is, duidt doorgaans op een fout.
HOMEDRIVE Retourneert de naam van het lokale station werkstation gekoppeld aan de homedirectory van de gebruiker. Ingesteld op basis van de locatie van de hoofdmap. De thuismap van de gebruiker wordt gespecificeerd in de module " Lokale gebruikers en groepen.”
HOMEPAD Geeft terug vol pad naar de homedirectory van de gebruiker. Ingesteld op basis van de locatie van de hoofdmap. De thuismap van de gebruiker wordt opgegeven in de module Lokale gebruikers en groepen.
HUISDELEN Retourneert het netwerkpad naar de gedeelde thuismap van de gebruiker. Ingesteld op basis van de locatie van de hoofdmap. De thuismap van de gebruiker wordt opgegeven in de module Lokale gebruikers en groepen.
INLOGSERVER de naam van de domeincontroller die wordt gebruikt om de huidige gebruiker te autoriseren
NUMBER_OF_PROCESSORS aantal processors in het systeem
Besturingssysteem naam besturingssysteem. Windows XP en Windows 2000 verschijnen als Windows_NT.
PAD Specificeert het zoekpad voor uitvoerbare bestanden.
PATHEKST Retourneert een lijst met bestandsextensies die door het besturingssysteem als uitvoerbaar worden beschouwd.
PROCESSOR_ARCHITECTURE processorarchitectuur
PROCESSOR_IDENTIFIER processorbeschrijving
PROCESSOR_LEVEL modelnummer van de processor
PROCESSOR_REVISIE processorrevisie
PROGRAMMABESTANDEN weg naar Programmamap Bestanden
SNEL Retourneert opdrachtregelopties voor de huidige tolk. Gemaakt door de opdracht Cmd.exe.
WILLEKEURIG willekeurig decimaal getal van 0 tot 32767. Gegenereerd door Cmd.exe
SESSIENAAM Sessietype. De standaardwaarde is 'Console'
SYSTEEMDRIVE schijf waarop deze zich bevindt De hoofdmap ramen
SYSTEEMwortel Pad van de Windows-hoofdmap
TEMP of TMP Retourneert de standaard tijdelijke mappen die worden gebruikt door toepassingen die toegankelijk zijn voor ingelogde gebruikers. Sommige toepassingen vereisen de TEMP-variabele, andere vereisen de TMP-variabele. Mogelijk kunnen TEMP en TMP naar verschillende mappen verwijzen, maar meestal zijn ze hetzelfde.
TIJD Geeft de huidige tijd terug. Gebruikt hetzelfde formaat als de opdracht time /t. Gemaakt door de opdracht Cmd.exe.
GEBRUIKERSDOMEIN de naam van het domein waartoe de huidige gebruiker behoort
GEBRUIKERSNAAM huidige gebruikersnaam
GEBRUIKERSPROFIEL pad naar het profiel van de huidige gebruiker
WINDIR de map waarin Windows is geïnstalleerd

De cmd.exe shell-omgeving wordt gedefinieerd door variabelen die het gedrag van de shell en het besturingssysteem bepalen.

Het is mogelijk om het gedrag van de shell-omgeving of de gehele besturingssysteemomgeving te definiëren met behulp van twee typen omgevingsvariabelen: systeem en lokaal.

Systeemomgevingsvariabelen bepalen het gedrag mondiale milieu besturingssysteem en lokale omgevingsvariabelen bepalen het gedrag van de omgeving in een bepaald exemplaar van cmd.exe.

Systeemomgevingsvariabelen worden standaard ingesteld in besturingssysteem en voor iedereen beschikbaar Windows-processen en gebruikers met beheerdersrechten kunnen deze variabelen wijzigen. Deze variabelen worden het meest gebruikt in loginscripts.

Lokale omgevingsvariabelen zijn beschikbaar wanneer de gebruiker voor wie ze zijn gemaakt, is ingelogd. Lokale variabelen uit de registercomponent HKEY_CURRENT_USER zijn alleen geldig voor de huidige gebruiker, maar definiëren het gedrag van de globale besturingssysteemomgeving.

Lijst met variabeletypen in aflopende volgorde van prioriteit.

  1. Ingebouwde systeemvariabelen
  2. Systeemvariabelen van registerhive HKEY_LOCAL_MACHINE
  3. Lokale registercomponentvariabelen HKEY_CURRENT_USER
  4. Alle omgevingsvariabelen en paden worden in het bestand vermeld 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 commandoshell elke instantie van cmd.exe erft de omgeving van zijn ouder applicatie en dienovereenkomstig kunt u variabelen in de nieuwe cmd.exe-omgeving wijzigen, wat geen invloed heeft op de omgeving van de bovenliggende toepassing.

Hier vindt u een lijst met systeem- en lokale omgevingsvariabelen voor Windows XP.

Variabel

Beschrijving

%ALLUSERSPROFIEL%

Lokaal

Retourneert de plaatsing van het profiel 'Alle gebruikers'.

Lokaal

Retourneert de standaardlocatie van toepassingsgegevens.

Lokaal

Retourneert het pad naar de huidige map.

Lokaal

Retourneert de opdrachtreeks die is gebruikt om te starten dit exemplaar cmd.exe.

Systeem

Retourneert het versienummer huidige uitbreidingen opdrachtbehandelaar.

Systeem

Retourneert de computernaam.

Systeem

Geeft het pad terug naar de opdrachtshell die wordt uitgevoerd.

Systeem

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

Systeem

Retourneert de foutcode van de laatst gebruikte opdracht. Betekenis: nee gelijk aan nul, geeft meestal aan dat er een fout is opgetreden.

Systeem

Retourneert de naam van het lokale werkstationstation dat is gekoppeld aan de thuismap van de gebruiker. Ingesteld op basis van de locatie van de hoofdmap. De thuismap van de gebruiker wordt opgegeven in de module Lokale gebruikers en groepen.

Systeem

Retourneert het volledige pad naar de thuismap van de gebruiker. Ingesteld op basis van de locatie van de hoofdmap. De thuismap van de gebruiker wordt opgegeven in de module Lokale gebruikers en groepen.

Systeem

Retourneert het netwerkpad naar de gedeelde thuismap van de gebruiker. Ingesteld op basis van de locatie van de hoofdmap. De thuismap van de gebruiker wordt opgegeven in de module Lokale gebruikers en groepen.

Lokaal

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

%NUMBER_OF_PROCESSORS%

Systeem

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

Systeem

Retourneert de naam van het besturingssysteem. Bij met behulp van Windows De naam van het besturingssysteem uit 2000 wordt weergegeven als Windows_NT.

Systeem

Specificeert het zoekpad voor uitvoerbare bestanden.

Systeem

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

%PROCESSOR_ARCHITECTURE%

Systeem

Retourneert de processorarchitectuur. Waarden: x86, IA64.

%PROCESSOR_IDENTFIER%

Systeem

Retourneert een beschrijving van de processor.

%PROCESSOR_LEVEL%

Systeem

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

%PROCESSOR_REVISION%

Systeem

Retourneert het processorrevisienummer.

Lokaal

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

Systeem

Retourneert een willekeurig decimaal getal van 0 tot 32767. Gemaakt door de opdracht Cmd.exe.

Systeem

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

Systeem

Retourneert de locatie van het systeem Windows-map XP.

Systeem en gebruiker

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

Systeem

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

Lokaal

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

Lokaal

Retourneert de gebruikersnaam van de momenteel ingelogde gebruiker.

Lokaal

Retourneert de profielplaatsing voor de huidige gebruiker.

Systeem

Retourneert de locatie van de directory van het besturingssysteem.

In dit artikel:

  • Variabelen definiëren
  • Commandoregelvariabelen (oproepparameters van bat-bestand)
  • IF Voorwaardelijke operator
  • Functies
  • Retourwaarden gebruiken (exitcode verwerken)

Variabelen definiëren

SET<Имяпеременной>=<Значениепеременной>

De SET-instructie is een uitbreiding van de mogelijkheid van het besturingssysteem om parameters te manipuleren. Het specificeert een variabele waarvan de waarde de naam vervangt wanneer die naam tussen procenttekens wordt gebruikt. Dus als deze is ingesteld (een variabele die veel games gebruiken geluidskaart computer):

SET BLASTER=A220 I5 D1 P330

dan bij gebruik van de volgende constructie in een batchbestand:

ECHO %BLASTER%

"A220 I5 D1 P330" wordt op het scherm weergegeven. Variabelen die zijn gedefinieerd met behulp van de SET-instructie worden aangeroepen omgevingsvariabelen omgeving en zijn zichtbaar na uitvoering totdat DOS opnieuw wordt gestart (tenzij handmatig gewijzigd in het geheugen). Dat wil zeggen dat het kan worden gebruikt vanuit het ene batchbestand of programma nadat het in een ander batchbestand of programma is gespecificeerd. De bekendste is de PATH-variabele, die een reeks paden is Snelzoeken bestanden. Het wordt ingesteld in het bestand autoexec.bat.

Commandoregelvariabelen
(parameters voor het aanroepen van het bat-bestand)

%<цифра 0-9>

Zoals in elke taal, in de taal batchbestanden Het is mogelijk om ontvangen variabelen als parameters in een bat-bestand te gebruiken.

Er kunnen in totaal 10 gelijktijdig bestaande onafhankelijke variabelen zijn. Om te schrijven complexe programma's dit is echter vrij klein regulier werk Vaak zijn 3-4 genoeg. De waarde van de variabele is gelijk aan de waarde van de overeenkomstige parameter van de opdrachtregel. De variabele %0 bevat de naam van het .bat-bestand en, als u dit hebt opgegeven, het pad ernaartoe. Dat wil zeggen, als u het bestand abc.bat met de volgende parameters hebt uitgevoerd:

abc.bat een bc def

dan zal de variabele %0 de waarde abc.bat bevatten, %1 zal de waarde a bevatten, %2 zal bc bevatten, en %3 zal def bevatten. Deze eigenschap wordt veel gebruikt om veelzijdige batchbestanden te maken bij repetitieve bewerkingen.

Om meer dan 10 variabelen van de opdrachtregel te krijgen, kunt u de opdracht SHIFT gebruiken.

Met de opdracht SHIFT kunt u meer dan 10 opdrachtregelparameters gebruiken. De overeenkomstige eerdere parameters gaan echter verloren. Met andere woorden: het SHIFT-commando verschuift alle variabelewaarden één stap naar links. Dat wil zeggen dat variabele %0 de waarde zal bevatten die eerder in variabele %1 zat, en variabele %1 zal de waarde van variabele %2 vóór de verschuiving bevatten. Echter, deze operatie is onomkeerbaar, dat wil zeggen, het is onmogelijk om de variabelen terug te schuiven.

IF Voorwaardelijke operator

Gelukkig, commando tolk cmd.exe in moderne Windows 2000 en hoger ondersteunt opdrachtblokken in vertakkende constructies, waardoor het niet meer nodig is om IF's met labels te gebruiken. Commandoblokken staan ​​tussen haakjes. Het ziet er als volgt uit (imiteert de inspringstijl van C/C++):

als voorwaarde (

Rem Commando's van de 'toen'-tak

Rem...

) anders (

Rem Commando's van de 'else'-tak

Rem...

Specifiek voorbeeld toepassingen:

@echo uit

stel BUILDMODE=%1 in

als "%BUILDMODE%" == "" (

Echo FAIL: Argument is vereist ^(--debug, --release^)

Afsluiten /b 1

rem Verwijder alle koppeltekens uit het argument om de verwerking te vereenvoudigen

stel BUILDMODE=%BUILDMODE in:-=%

if "%BUILDMODE%" == "foutopsporing" (

Stel CCFLAGS=/Od /MDd /Z7 in

) anders (

Stel CCFLAGS=/O2 /MD in

Volgens mij is dit heel goed mogelijk om mee te leven. Maar zoals altijd is het leven niet zo eenvoudig als het lijkt. Er is één probleem. Variabelen die in then- en else-blokken worden gebruikt, worden uitgebreid voordat de blokken worden uitgevoerd, niet tijdens de uitvoering. In het bovenstaande voorbeeld levert dit geen problemen op, maar in het volgende wel:

if "%BUILDMODE%" == "foutopsporing" (

Echo INFO: De debug-omgevingsmodus instellen

Stel OPTFLAGS=/Od in

Stel CCFLAGS=%OPTFLAGS% /MDd /Z7 in

) anders (

Echo INFO: De omgevingsvrijgavemodus instellen

Stel OPTFLAGS=/O2 in

Stel CCFLAGS=%OPTFLAGS% /MD in

Het probleem is dat in beide blokken de vervanging van de OPTFLAGS-variabele zal plaatsvinden voordat deze wordt gewijzigd tijdens de uitvoering van dat blok. Dienovereenkomstig zal CCFLAGS worden gevuld met de waarde die OPTFLAGS had op het moment dat de uitvoering van dit blok begon.

Dit probleem wordt opgelost door gebruik te maken van vertraagde variabele-expansie. Variabelen in !…! in plaats van %...% zullen hun betekenissen pas onthuld worden op het moment van direct gebruik. Deze modus standaard uitgeschakeld. U kunt dit inschakelen door de schakeloptie /V:ON te gebruiken bij het aanroepen van cmd.exe, of door de opdracht te gebruiken:

in de tekst van het bat-bestand zelf. De tweede methode lijkt mij handiger: het is niet erg cool om van iemand te eisen dat hij je script met een bepaalde parameter uitvoert.

Dat gezegd hebbende, zou het vorige "verkeerde" voorbeeld als volgt kunnen worden gecorrigeerd:

plaatslokaalg

if "%BUILDMODE%" == "foutopsporing" (

Echo INFO: Debug-modusomgeving instellen

Stel OPTFLAGS=/Od in

Stel CCFLAGS=!OPTFLAGS! /MDd /Z7

) anders (

Echo INFO: Releasemodus-omgeving instellen

Stel OPTFLAGS=/O2 in

Stel CCFLAGS=!OPTFLAGS! /MD

Dit is bijna een volwaardig als-dan-anders-blok. Bijna, want als je een haakje sluiten tegenkomt in een van de echo-opdrachten, moet je daaraan ontsnappen met een ^-teken, anders raakt de parser in de war...

Maar dit is in ieder geval veel beter dan het waanzinnige aantal tags en overgangen.

Functies

Is het mogelijk om een ​​functie in een bat-bestand te maken? Ja, dat kan. Bovendien is het soms zelfs nodig. Toegegeven, deze kunnen voorwaardelijk functies worden genoemd.

Er is een speciale syntaxis voor de oproepopdracht, waarmee u naar een markering in hetzelfde bat-bestand kunt gaan en de plaats kunt onthouden vanwaar deze oproep is gedaan:

call:label-argumenten

De functie wordt geretourneerd met het commando:

exit /b [optionele retourcode]

De /b-sleutel is hier erg belangrijk: zonder deze verlaat u niet de functie, maar het script in het algemeen.

Voor details bel opdrachtregel:

telefoongesprek/?

Uitgang /?

Interessant is dat de call-opdracht met deze syntaxis wordt ondersteund recursieve oproepen met automatische creatie van een nieuw frame voor variabele argumenten %0-%9. Soms kan dit nuttig zijn. Hier is een klassiek voorbeeld van recursieve factoriële berekening in de commandotaal:

@echo uit

call:faculteit %1

echo %RESULTAAT%

Uitgang

rem Functie om de faculteitswaarde te berekenen

rem Inloggen:

rem %1 Het getal waarvoor u de faculteit wilt berekenen

rem-uitvoer:

rem %RESULT% Factoriële waarde

:faculteit

als %1 == 0 (

Stel RESULTAAT=1 in

Afsluiten /b

als %1 == 1 (

Stel RESULTAAT=1 in

Afsluiten /b

set /a PARAM=%1 - 1

oproep: faculteit %PARAM%

set /a RESULTAAT=%1 * %RESULTAAT%

uitgang /b

Voorbeeld van werk:

> faculteit.bat 10

3628800

Retourwaarden gebruiken
(programma-exitcode verwerken)

Wanneer een programma zijn werk voltooit, stuurt het zijn beëindigingscode terug naar het besturingssysteem. Het is gebruikelijk om bij succesvolle voltooiing een nul terug te geven, anders een foutcode. Soms, of liever vaak, retourneert een programma "opzettelijk" een waarde die niet nul is, zodat sommige details van de werking ervan kunnen worden "geleerd" in het batchbestand. Het programma retourneert bijvoorbeeld de code van de ingedrukte toets en het .bat-bestand voert op basis daarvan verschillende acties uit.

Hoe kan een batchbestand de exitcode van het uitgevoerde programma achterhalen? Hiervoor is de sleutelvariabele ERRORLEVEL beschikbaar.

Voorbeeld van een batchbestand met foutniveaus:

@ECHO UIT

REM Voer het programma prg1.exe uit

PRG1.EXE

REM-aanvullingscodeanalyse

ALS FOUTNIVEAU 2 BESTAND NIET GEVONDEN KOMT

ALS FOUTNIVEAU 1 NAAR WRITERROR GAAT

ALS FOUTNIVEAU 0 GA NAAR EXITOK

GA NAAR ONEXIT

:BESTAND NIET GEVONDEN

ECHO-fout! Bestand niet gevonden!

GA NAAR ONEXIT

:SCHRIJFFOUT

ECHO-opnamefout!

GA NAAR ONEXIT

:EXITOK

ECHO Het programma is met succes afgerond.

GA NAAR ONEXIT

:ONEXIT

Houd er rekening mee dat de analyse van de exitcode niet begint vanaf nul, maar vanaf de maximaal mogelijke waarde. Feit is dat een dergelijke controle betekent: “als het foutniveau groter is dan of gelijk is aan de waarde, dan...”. Dat wil zeggen, als we vanaf nul controleren, zal elke waarde op de eerste regel waar zijn, wat onjuist is.

Dit is de meest voorkomende fout in dit soort programma's.

Binnen opdrachtbestanden kunt u werken met zogenaamde omgevingsvariabelen (of omgevingsvariabelen), die elk zijn opgeslagen in werkgeheugen, heeft zijn eigen unieke naam en de waarde ervan is een string. Standaardomgevingsvariabelen worden automatisch geïnitialiseerd wanneer het besturingssysteem opstart. Dergelijke variabelen zijn bijvoorbeeld WINDIR, die de locatie van de Windows-map bepaalt, TEMP, die het pad naar de map bepaalt voor het opslaan van tijdelijke Windows-bestanden of PATH, waarin het systeempad (zoekpad) wordt opgeslagen, dat wil zeggen de lijst met mappen waarin het systeem moet zoeken naar uitvoerbare bestanden of bestanden delen(Bijvoorbeeld, dynamische bibliotheken). Ook in batchbestanden met behulp van SET-opdrachten U kunt uw eigen omgevingsvariabelen declareren.

De waarde van een variabele verkrijgen

Om de waarde van een specifieke omgevingsvariabele te achterhalen, moet u de naam van die variabele in % tekens omsluiten. Bijvoorbeeld:

@ECHO OFF CLS REM Creëer variabele MyVar SET MyVar=Hallo REM Verander variabele SET MyVar=%MijnVar%! ECHO MyVar-variabelewaarde: %MyVar% REM MyVar-variabele verwijderen SET MyVar= ECHO WinDir-variabelewaarde: %WinDir%

Wanneer u zo’n batchbestand uitvoert, wordt de regel op het scherm weergegeven

MyVar variabele waarde: Hallo! Variabele waarde van WinDir: C:\WINDOWS

Variabelen converteren naar strings

Er zijn enkele manipulaties die u kunt uitvoeren met omgevingsvariabelen in batchbestanden. Ten eerste kan daarop de aaneenschakeling (lijmen) worden uitgevoerd. Om dit te doen, hoeft u alleen maar de waarden van de verbonden variabelen naast elkaar te schrijven in het SET-commando. Bijvoorbeeld,

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

Na het uitvoeren van deze opdrachten in het bestand zal de waarde van de C-variabele de string "Double" zijn. U mag het +-teken niet gebruiken voor aaneenschakeling, omdat dit eenvoudigweg als een symbool wordt geïnterpreteerd. Bijvoorbeeld nadat u het bestand met de volgende inhoud hebt uitgevoerd

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=Een+Twee

Ten tweede kunt u met behulp van de constructie subtekenreeksen uit een omgevingsvariabele extraheren %variabelenaam:~n1,n2%, waarbij het getal n1 de offset bepaalt (het aantal tekens dat moet worden overgeslagen) vanaf het begin (als n1 positief is) of vanaf het einde (als n1 negatief is) van de overeenkomstige omgevingsvariabele, en het getal n2 het aantal is tekens die moeten worden toegewezen (als n2 positief is) of het nummer laatste karakters in een variabele die niet zal worden opgenomen in de geselecteerde subtekenreeks (als n2 negatief is). Als er slechts één negatieve optie -n is opgegeven, worden de laatste n tekens geëxtraheerd. Als de variabele %DATE% bijvoorbeeld de tekenreeks "21.09.2007" opslaat (karakterweergave De huidige datum onder bepaalde regionale instellingen), en vervolgens na het uitvoeren van de volgende opdrachten

INSTELLEN dd1=%DATUM:~0,2% INSTELLEN dd2=%DATUM:~0,-8% INSTELLEN mm=%DATUM:~-7,2% INSTELLEN jjjj=%DATUM:~-4%

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

Ten derde kunt u de substringvervangingsprocedure uitvoeren met behulp van de constructie %variabele_naam:s1=s2%(dit retourneert een string waarbij elke keer dat de substring s1 voorkomt in de corresponderende omgevingsvariabele wordt vervangen door s2 ). Bijvoorbeeld na het uitvoeren van de opdrachten

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

variabele b slaat de string "199456" op. Als de parameter s2 niet is opgegeven, wordt de substring s1 verwijderd uit de uitvoerstring, d.w.z. na het uitvoeren van de opdracht

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

variabele b slaat de string "1456" op.

Bewerkingen met variabelen als met getallen

Wanneer verbeterde opdrachtverwerking is ingeschakeld (de standaardmodus in Windows XP), is het mogelijk om waarden van omgevingsvariabelen als getallen te behandelen en er rekenkundige berekeningen op uit te voeren. Gebruik hiervoor de opdracht SET met de schakeloptie /A. Hier is een voorbeeld van een batchbestand add.bat dat twee getallen optelt die als opdrachtregelparameters zijn opgegeven en de resulterende som op het scherm weergeeft:

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

Lokale veranderingen variabelen

Alle wijzigingen die met behulp van de opdracht SET zijn aangebracht in omgevingsvariabelen in batch bestand, worden zelfs opgeslagen nadat dit bestand is voltooid, maar zijn alleen effectief binnen het huidige opdrachtvenster. Het is ook mogelijk om wijzigingen in omgevingsvariabelen binnen een batchbestand te lokaliseren, dat wil zeggen om automatisch de waarden van alle variabelen te herstellen zoals ze waren voordat het bestand werd gestart. Hiervoor worden twee commando's gebruikt: SETLOCAL en ENDLOCAL. Het SETLOCAL-commando bepaalt het begin van een gebied lokale installaties omgevingsvariabelen. Met andere woorden, wijzigingen in de omgeving die worden aangebracht na het uitvoeren van SETLOCAL zullen lokaal zijn voor het huidige batchbestand. Elke SETLOCAL-opdracht moet een overeenkomstige ENDLOCAL-opdracht hebben om de vorige waarden van de omgevingsvariabelen te herstellen. Omgevingswijzigingen die zijn aangebracht nadat de opdracht ENDLOCAL is uitgevoerd, zijn niet langer lokaal voor het huidige batchbestand; hun eerdere waarden worden niet hersteld na voltooiing van de uitvoering van dit bestand.

02/12/15 21.1K

Waarom is er zo’n chaos in de wereld? Ja, omdat de beheerder van ons systeem zijn taken vergat te vervullen. Of ik ben zojuist de lijst met cmd-opdrachten uit onze wereld kwijtgeraakt. Hoewel dit een enigszins originele kijk is op de bestaande gang van zaken, weerspiegelt het niettemin een deel van de waarheid die we nodig hebben: met behulp van de opdrachtregel kunt u eenvoudig orde op uw computer brengen:

Wat is de opdrachtregel

De opdrachtregel is het eenvoudigste hulpmiddel voor het beheren van het besturingssysteem van uw computer. Controle vindt plaats met behulp van een aantal gereserveerde opdrachten en tekensets tekst toetsenbord zonder de muis ( in het Windows-besturingssysteem).

In systemen ingeschakeld UNIX-gebaseerd Wanneer u met de opdrachtregel werkt, kunt u de muis gebruiken.

Sommige opdrachten kwamen via MS-DOS naar ons toe. De opdrachtregel wordt ook wel de console genoemd. Het wordt niet alleen gebruikt voor het beheer van het besturingssysteem, maar ook voor het beheer reguliere programma’s. Meestal zijn de meest zelden gebruikte opdrachten opgenomen in deze reeks opdrachten.

Voordeel cmd-applicaties basisopdrachten is dat het een minimale hoeveelheid systeembronnen verbruikt. En dit is belangrijk in noodsituaties waarin alle krachten van de computer op de een of andere manier betrokken zijn.

cmd implementeert de mogelijkheid om volledige batchbestanden uit te voeren en te maken, die een specifieke uitvoeringsvolgorde van een aantal opdrachten (scripts) vertegenwoordigen. Dankzij dit kunnen ze worden gebruikt om bepaalde taken te automatiseren ( accountbeheer, gegevensarchivering en meer).

Team Windows-schaal De Cmd.exe-interpreter wordt gebruikt om opdrachten te manipuleren en om te leiden naar specifieke hulpprogramma's en besturingssysteemhulpmiddelen. Het laadt de console en stuurt opdrachten om in een formaat dat het systeem begrijpt.

Werken met de opdrachtregel in het Windows-besturingssysteem

U kunt de console in Windows op verschillende manieren oproepen:


Bij beide methoden wordt de console uitgevoerd als de huidige gebruiker. Dat wil zeggen, met alle rechten en beperkingen die worden opgelegd aan zijn rol in het besturingssysteem. Om cmd uit te voeren met beheerdersrechten, moet u het programmapictogram selecteren in het menu Start en in contextmenu selecteer het juiste artikel:


Nadat u het hulpprogramma hebt uitgevoerd, kunt u het krijgen achtergrond informatie over opdrachten en het formaat om ze in de console te schrijven. Voer hiervoor de helpverklaring in en druk op “Enter”:

Basisopdrachten voor het werken met bestanden en mappen

De meest gebruikte commando's zijn:

  • RENAME – hernoemen van mappen en bestanden. Commandosyntaxis:

HERNOEM | REN [station/pad] originele bestands-/mapnaam | uiteindelijke bestandsnaam
Voorbeeld: HERnoem C:UsershomeDesktoptost.txt test.txt

  • DEL (ERASE) – wordt alleen gebruikt om bestanden te verwijderen, geen mappen. De syntaxis is:

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

Met verwerkingsmethode bedoelen we een speciale vlag waarmee u een bepaalde voorwaarde kunt implementeren bij het verwijderen van een bestand. In ons voorbeeld maakt de vlag “P” de weergave mogelijk van een toestemmingsdialoogvenster voor het verwijderen van elk bestand:


Meer details over de mogelijke waarden van de parameter “processing method” vindt u in technische documentatie op het Windows-besturingssysteem.

  • MD – hiermee kunt u een map maken per opgegeven pad. Syntaxis:

MD [schijf:] [pad]
Voorbeeld:
MD C:GebruikershomeBureaubladtest1test2

In het voorbeeld wordt een submap test2 aangemaakt binnen de map test1. Als een van de hoofdmappen van het pad niet bestaat, wordt deze ook aangemaakt:

  • RD ( RMDIR) – verwijdering specifieke map of alle mappen in het opgegeven pad. Syntaxis:

RD | RMDIR [processleutel] [station/pad]
Voorbeeld:
rmdir /s C:GebruikershomeBureaubladtest1test2

In het voorbeeld wordt de vlag s gebruikt, waardoor de volledige vertakking van de mappen die in het pad is opgegeven, wordt verwijderd. Daarom moet u het niet onnodig gebruiken rmdir-opdracht met deze verwerkingssleutel.

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

Commando's voor het werken met het netwerk

Met de opdrachtregel kunt u niet alleen beheren bestandssysteem PC, maar ook de zijne netwerkmogelijkheden. Deel netwerk commando's De console bevat een groot aantal operators om het netwerk te monitoren en te testen. De meest relevante daarvan zijn:

ping [-t] [-a] [-n teller] [-l grootte] [-f] [-i TTL] [-v type] [-r teller] [-s teller] [(-j host_list | - k node_list)] [-w interval] [doel_PC_naam]

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

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

  • tracert – gebruikt om te bepalen netwerk pad Naar gespecificeerde bron door een speciaal echobericht via het protocol te verzenden
  • ICMP (Controleberichtprotocol). Na het uitvoeren van de opdracht met parameters wordt een lijst weergegeven met alle routers waar het bericht doorheen gaat. Het eerste element in de lijst is de eerste router aan de kant van de gevraagde bron.

Syntaxis van tracer cmd-opdracht:
tracert [-d] [-h maximum_hop_nummer] [-j knooppuntlijst] [-w interval] [doelbronnaam]
Voorbeeld implementatie:
tracert -d -h 10 microsoft.com

In het voorbeeld wordt de route naar een opgegeven bron getraceerd. Dit verhoogt de snelheid van de bewerking vanwege het gebruik van de parameter d, die voorkomt dat de opdracht probeert toestemming te verkrijgen om IP-adressen te lezen. Het aantal overgangen (sprongen) is beperkt tot 10 ingestelde waarde parameter h. Standaard is het aantal sprongen 30:


afsluiten [(-l|-s|-r|-a)] [-f] [-m [\PC-naam]] [-t xx] [-c “berichten”] [-d[u][p]: xx:jj]
Voorbeeld:
uitschakelen /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. Hierdoor wordt u gedwongen uit te loggen bij alle applicaties (f) en de sessie van de huidige gebruiker (l).