Effektiv konsoll. SETLOCAL kommando - endre miljøvariabler for gjeldende batchfil

Sted: Windows\system32

Beskrivelse: Windows kommandoprosessor

Windows XP har en såkalt konsoll – et program cmd.exe, som er kommandotolken. Når den startes enkelt, uten å spesifisere kommandolinjeparametere, viser konsollen versjonen av operativsystemet, informasjon om opphavsrettsbeskyttelsen til OS-utviklere og selve kommandolinjen, der du kan angi selve programmet som en kommandolinjeparameter cmd.exe, så vel som enhver ekstern kommando, for eksempel en kommando for å starte et annet program eller en standardkommando som mkdir, del, etc.

Kommandolinjealternativer

Kommandolinjesyntaks:

CMD[team]

Du kan bruke flere kommandoer samtidig ved å bruke en spesiell skilletegn mellom dem - &&-tegn, og hele kombinasjonen av flere kommandoer må være omgitt av anførselstegn, for eksempel " team&&team&& team".

/? - ring etter hjelp

/EN- ut resultatene av å utføre en gitt kommando i ANSI-format

/C- utførelse av en gitt kommando og deretter lukking av konsollvinduet

/D- deaktiver kjøringen av AutoRun-kommandoer (som er de første som kjøres automatisk når cmd.exe kalles) spesifisert i spesielle registerseksjoner HKEY_LOCAL_MACHINE\Programvare\Microsoft\Command Processor\AutoRun Og HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

/E:PÅ (/E:AV)- tillatelse (forbud) mot kommandoutvidelser. I Windows XP er forbedret behandling av alle cmd.exe-kommandoer aktivert som standard. Denne innstillingen brukes til å aktivere/deaktivere utvidelser for en bestemt prosess. Avansert behandling inkluderer følgende kommandoer: assoc, call, chdir (cd), farge, del (slett), endlocal, for, ftype, goto, if, mkdir (md), popd, prompt, pushd, set, setlocal, shift, start(å ringe eksterne kommandoer er også endret)

/F:PÅ (/F:AV)- tillate (nekte) fullføring av fil- og mappenavn (deaktivert som standard) for et spesifikt cmd.exe-kall. En ganske praktisk funksjon som lar deg ikke legge inn filstier eller mappenavn helt manuelt i konsollvinduet, men bare angi en del av en lang bane og ved å trykke på en spesiell tastekombinasjon la operativsystemet finne passende alternativer og ganske enkelt velge en du trenger. (Hvis du trenger å aktivere eller deaktivere navnefullføring for alle anrop til cmd.exe, se Automatiske kommandoer).

Brukerinnstillinger har forrang over datamaskininnstillinger, og verdien av /F-shell-parameteren har forrang over registerinnstillinger. Microsoft gir noen avklaringer angående bruken av denne funksjonen: "Hvis fullføring er aktivert med kommandolinjebryteren / F:ON, brukes to kontrolltegn: Ctrl+D for mappenavn og Ctrl+F for filnavn.

For å deaktivere en bestemt terminator i systemregisteret, brukes den heksadesimale verdien til mellomromstegnet (0 x 20) som spesialtegnkode. Fullføring kalles når ett av disse to spesialtegnene skrives inn. Fullføringsfunksjonen tar stistrengen til venstre for inndatapunktet, legger til et jokertegn hvis den ikke har en, og konstruerer deretter en liste over stier som samsvarer med den resulterende definisjonen.

Det første elementet i denne listen over samsvarende baner skrives deretter ut. Hvis listen er tom, høres et pip og ingenting vises. Når du deretter skriver inn det samme spesialtegnet igjen, vil du gå gjennom alle matchende stier.

Hvis du trykker på Shift-tasten mens du skriver et kontrolltegn, kan du se listen over stier i omvendt rekkefølge. Hvis du endrer utdatabanen og deretter skriver inn escape-tegnet igjen, tømmes den lagrede listen og en ny liste med baner bygges. Det samme skjer hvis du bytter fra ett fullføringssymbol til et annet.

Den eneste forskjellen når du bruker filterminatoren er at både banen og filnavnet brukes for å bygge den samsvarende listen, mens når du bruker mappeterminatoren, brukes bare banen. Når en mappeterminator brukes i en av de innebygde mappemanipuleringskommandoene (CD, MD eller RD), er mappeterminatoren alltid underforstått. Terminatoren fungerer også korrekt med filnavn som inneholder mellomrom eller andre spesialtegn, så lenge den samsvarende strengen er omgitt av anførselstegn.

I tillegg, hvis du flytter innsettingspunktet til venstre og deretter bruker et etterfølgende tegn innenfor en linje, vil den gjenværende teksten til høyre for innsettingspunktet bli forkastet. Spesialtegn som krever anførselstegn:<пробел>&()()^=;!"+,~". Er alt klart?

/K- utførelse av en gitt kommando uten etterfølgende fullføring (konsollvinduet lukkes ikke)

/Q- deaktiver utgang av kommandoer til skjermen (ECHO OFF). /R - lik /C

/S- endre virkemåten til kommandoen etter /C eller /K

/T: farge - angi fargen på teksten og bakgrunnen til konsollvinduet. Fargeparameteren har en verdi i form av to heksadesimale tall: den første angir bakgrunnsfargen til vinduet, og den andre angir teksten i vinduet. Det vil si at resultatet av å utføre kommandoen "CMD /T:7C" vil være lyserøde bokstaver på en hvit bakgrunn.

/U- utførelse av kommandoer resulterer i Unicode-format

/V:PÅ (/V:AV)- tillate (deaktivere) forsinket utvidelse av miljøvariabler (for et spesifikt cmd.exe-kall) ved å bruke utropstegnet "!" som en separator. For eksempel tillater /V:ON bruk av!var! som en kjøretidsutvidelse av var. Var-syntaksen brukes til å utvide variabler på input, noe som gir svært forskjellige resultater inne i en FOR-løkke. Når lat utvidelse av miljøvariabler er aktivert, vises "!" (utropstegn) kan brukes til å erstatte gjeldende verdi av en miljøvariabel ved kjøring; /X - betyr det samme som /E:ON-bryteren, av kompatibilitetsgrunner; /Y er det samme som /E:OFF. Og noen flere kommentarer.

Hvis /C- eller /K-bryteren er spesifisert, behandles resten av kommandolinjen etter den bryteren som kommandolinjen, og anførselstegn (") behandles som sådan. Anførselstegn på kommandolinjen bevares hvis alle følgende betingelser er sanne: /S-bryteren mangler nøyaktig to anførselstegn det er ingen andre spesialtegn mellom dem, for eksempel: &;<>()@^|; det er ett eller flere mellomrom mellom dem; strengen i anførselstegn er navnet på den kjørbare filen. Ellers blir det første tegnet merket av, og hvis det er et anførselstegn, fjernes det, det siste anførselstegn på kommandolinjen fjernes også, og all tekst etter det siste anførselstegn beholdes.

Tabell for innstilling av tekst og bakgrunnsfarge for konsollvinduet:

0 - svart; 1 - blå; 2 - grønn; 3 - blå; 4 - rød; 5 - lilla; 6 - gul; 7 - hvit; 8 - grå; 9 - lyseblå; A - lysegrønn; B - lyseblå; C - lys rød; D - lys lilla; E - lys gul; F - lys hvit.

Farge og andre innstillinger kan forresten endres på en annen måte. Høyreklikk på vinduets tittellinje og velg Egenskaper. Et vindu åpnes med fire faner der alternativer for å endre programinnstillinger vil være tilgjengelige. Hvis du ikke liker den standard svarte ledetekstskjermen, lar Farge-fanen deg velge en skjerm- og tekstfarge enten fra 16 standardfarger som det er tilsvarende fargeprøver for, eller ved å spesifisere en numerisk RGB-fargeverdi. På fanen Layout kan du justere størrelsen på vinduet og skjermbufferen. Hvis i tidlig MS-DOS og Windows skjermstørrelsen forble uendret på 25 linjer høy og 80 tegn lang, og for å vise flere linjer måtte du legge til kommandoen |more, så kan du på NT og senere systemer ganske enkelt angi skjermbufferstørrelsen til en stor nok størrelse og bruk rullefeltet, som er mye mer praktisk.

Tekst i ledetekstvinduet For å kopiere og lime inn tekst i ledetekstvinduet, vil ikke de vanlige Windows-tastatursnarveiene, som Ctrl+C, Ctrl+V, fungere. For å trekke ut tekst fra utklippstavlen, må du hente frem menyen ved å høyreklikke på vindustittelen og velge undermenyen Rediger. Eller bare høyreklikk på vinduet. For å kopiere tekst fra vinduet, velg Merk og bruk musen til å markere ønsket tekst. Trykk deretter Enter eller velg Kopier fra samme meny. Hvis du trenger å lime inn tekst i kommandolinjevinduet, bruk Lim inn-kommandoen. For å gjenta kommandoen, bruk pilene<<вверх>> og<<вниз >>, slik at du kan navigere gjennom listen over utførte kommandoer. For å tømme skjermen for tekst, bruk cls-direktivet.

TITTEL- for å endre radoverskriften

TITTEL[streng] , der streng er den fremtidige tittelen på kommandolinjevinduet (skrevet uten anførselstegn). Når vindustittelen er satt, kan den bare endres ved å kalle opp TITLE-kommandoen på nytt. Å bruke denne kommandoen kan være nyttig i batchfiler.

Dermed vil utførelse av eksempelet nedenfor bli ledsaget av utseendet til den tilsvarende inskripsjonen i vindustittelen:

TITLE Filer blir kopiert...

KOPIER \\Server\Share\*.doc C:\User\Common\*.doc

ECHO-kopiering fullført.

TITLE Prosessen fullført

Team - Med denne kommandoen kan du kjøre kommandoer og programmer til bestemte tider.

[\\datamaskinnavn] [ | /SLETT ]

[\\datamaskinnavn] tid [ /HVER:dato[,...] | /NESTE:dato [,...]] "kommando"

\\ datamaskinnavn peker på en ekstern datamaskin der planlagte oppgaver kan kjøres. Hvis denne parameteren ikke er spesifisert, antas datamaskinen som AT-kommandoen kjøres på som standard;

id identifikator tildelt den angitte kommandoen;

/slett avbryter den tiltenkte kommandoen. Hvis id utelates, blir alle tildelte kommandoer på datamaskinen kansellert;

/ja dette alternativet, når det brukes med det forrige alternativet (/delete), aktiverer automatisk bekreftelse for alle forespørsler;

tid kommandoutførelsestid (i 24-timers format timer:minutter);

/interaktiv lar AT-kommandoen kommunisere med brukere som for øyeblikket er koblet til systemet;

/every:date[,...] utfører kommandoen på hver spesifisert dag(er) i uken eller måneden. Hvis dato utelates, antas gjeldende dag i måneden;

/neste:dato[...] utfører den angitte kommandoen neste gang den angitte datoen inntreffer (for eksempel neste torsdag). Hvis ingen dato er spesifisert, antas gjeldende dag i måneden som standard;

"team" spesifiserer Windows NT-kommandoen eller batchprogrammet som skal utføres. Filnavnet må spesifiseres i sin helhet. Samtidig, hvis noen av de interne kommandoene utføres, for eksempel COPY eller DIR, og ikke den kjørbare filen, er det nødvendig å starte kommandotolken med / C-bryteren, for eksempel:

KL 10:00 "CMD /C DIR > C:\test.out.

Team Til- Dens muligheter er omfattende, men vi vil begrense oss til å demonstrere bare én av dem - Kopiering over et nettverk til alle maskiner samtidig. La oss si at du vil kopiere en fil til tjue maskiner. Dette gjøres veldig raskt. Først skriver vi en liste over alle tilgjengelige maskiner på nettverket til list.txt-filen. I konsollen skriver vi:

net view > c:\list.txt

Deretter, for å utføre for eksempel kopiering av patch.exe-filen til hver maskin fra listen, utsteder vi kommandoen:

FOR /F "tokens=1" %i i (c:\list.txt) må du kopiere d:\temp\patch.exe "%i\C$\programfiler\ICQ"

%i-variabelen vil automatisk ta verdien av NetBIOS-maskinnavnet fra den nye linjen i list.txt-filen og kopiering vil bli laget til denne maskinen.

Endre utseendet på ledeteksten

cmstp.exe

Sted: WINDOWS\system32

Beskrivelse: Microsoft Connection Manager Profile Installer

Installer eller fjern en Connection Manager-tjenesteprofil. Kommando utført uten parametere cmstp installerer en tjenesteprofil med standardinnstillinger som passer for operativsystemet og brukertillatelser.

comp.exe

Sted: WINDOWS\system32

Beskrivelse: File Compare Utility

En byte-for-byte sammenligning av to eller flere filer. Team komp lar deg sammenligne filer som ligger på forskjellige stasjoner og i forskjellige kataloger. Når du sammenligner filer med kommandoen komp deres navn og plassering vises. Kommando utført uten parametere komp ber om filer for sammenligning.

En beskrivelse av programmet er i Windows Hjelp.

Syntaks:

komp[fil1 ] [fil2 ] [ /d] [/en] [/l] [/n= antall_linjer ] [ /c]

For å sammenligne innholdet i C:\Reports-katalogen med innholdet i sikkerhetskopikatalogen \\Sales\Backup\April , skriv inn følgende kommando:

comp c:\rapporter\\salg\backup\april

For å sammenligne de første ti linjene med filer i \Invoice-katalogen og skrive ut resultatet i desimalformat, skriv inn følgende kommando:

comp \invoice\*.txt \invoice\backup\*.txt /n=10 /d

compact.exe

Sted: WINDOWS\system32

Beskrivelse: Filkomprimeringsprogram - File Compress Utility

Vis informasjon eller endre komprimering av filer og kataloger på NTFS-partisjoner. Kommandokjøring uten parametere kompakt Viser informasjon om komprimering av filer i gjeldende katalog.

En beskrivelse av programmet er i Windows Hjelp.

Syntaks:

kompakt[(/c|/u)] ] [filnavn[...]]

control.exe

Sted: Windows\system32

Beskrivelse: Windows kontrollpanel

Denne kommandoen brukes til å starte kontrollpanel-appleter

Tips: Hvordan automatisere pålogging

Register: Forbud mot å starte kontrollpanelet og dets appleter

convert.exe

Sted: Windows\system32

Beskrivelse: Verktøy for filsystemkonvertering

Kommandolinjeverktøyet brukes til å konvertere volumer med FAT- og FAT32-filsystemet til volumer med NTFS-filsystemet.

Syntaks:

konvertere[volum] /fs:ntfs

cscript.exe

Sted: Windows\system32

Beskrivelse: Microsoft (r)-konsollbasert skriptvert

Skriptserver cscript.exe er et konsollalternativ, designet for å samhandle med brukeren via kommandolinjen (i motsetning til GUI-applikasjonen wscript.exe).

Syntaks:

cscript[script_name] [server_parameters] [script_args]

Det er en beskrivelse av parameterne i Windows Hjelp.

cacls.exe

Sted: Windows\system32

Beskrivelse: Endre tilgangskontrolltabeller - Kontroll ACL-program

Programmet brukes til å vise eller endre DACL-filer (selektiv tilgangskontrolltabell).

En beskrivelse av programmet er i Windows Hjelp.

Vise, sette og slette cmd.exe miljøvariabler.

SET [variabel=[streng]]

variabel Navnet på miljøvariabelen.

streng En tegnstreng tilordnet den angitte variabelen.

Skriv inn SET uten parametere for å vise gjeldende miljøvariabler.

Endre SET-kommandoen når du aktiverer utvidet kommandobehandling:

Hvis du, når du ringer, bare spesifiserer variabelnavnet uten likhetstegn og verdi,

SET-kommandoen vil skrive ut verdiene til alle variabler hvis navn begynner med

fra den angitte linjen. For eksempel:

Denne kommandoen vil skrive ut verdiene til alle variabler hvis navn begynner med "P".

Hvis variabelnavnet ikke finnes i det gjeldende miljøet, returnerer SET-kommandoen

vil sette feilverdien til ERRORLEVEL 1.

SET-kommandoen tillater ikke likhetstegn i navnet

miljøvariabel.

SET-kommandoen støtter to ekstra brytere:

SET /A uttrykk

SET /P variabel=

/A-bryteren indikerer at strengen til høyre for likhetstegnet er numerisk

uttrykk hvis verdi beregnes. Uttrykksbehandleren er veldig

er enkel og støtter følgende operasjoner, oppført i synkende rekkefølge

prioritet:

() - gruppering

! ~ - - unære operatører

*/% - aritmetiske operatorer

Aritmetiske operatorer

<< >> - binært skift

& - binær OG

^ - binær eksklusiv ELLER

| - binær ELLER

= *= /= %= += -= - oppgave

&= ^= |= <<= >>=

Uttalelsesskiller

Når du bruker logiske eller binære operatorer, må du

omslutt uttrykksstrengen i anførselstegn. Eventuelle ikke-numeriske strenger i uttrykket

behandles som navn på miljøvariabler hvis verdier er konvertert

i numerisk form før bruk. Hvis en variabel med det angitte navnet

ikke er definert i systemet, erstattes en nullverdi. Dette

lar deg utføre aritmetiske operasjoner med verdiene til miljøvariabler,

Dessuten trenger du ikke skrive inn %-tegn for å få verdier. Hvis laget

SET /A kalles fra kommandolinjen, ikke fra en batchfil, den sendes ut

den endelige betydningen av uttrykket.

Til venstre for en hvilken som helst oppdragsoperatør

må være navnet på miljøvariabelen. Numeriske verdier behandles som

desimal, med mindre det innledes med et 0x-prefiks for heksadesimale tall,

og 0 for oktale tall.

For eksempel, tallene 0x12,

og 022 representerer desimaltallet 18. Legg merke til notasjonen

oktale tall: 08 og 09 er ikke gyldige tall fordi i

Det oktale tallsystemet bruker ikke tallene 8 og 9.

/P-bryteren lar deg angi verdien til en variabel for den angitte inndatastrengen

bruker. Viser den angitte ledeteksten String før lesing

angitt streng. PromptString-ledeteksten kan være tom.

Substitusjon av miljøvariabler kan utvides som følger:

%PATH:str1=str2%

vil utvide effekten av PATH-miljøvariabelen ved å erstatte hver forekomst av "str1" i

utvidet resultat på "str2".

start av den utvidede utgangen til den første forekomsten av den gjenværende delen av "str1".

Du kan også bruke forlengelsesstrenger.

vil utvide effekten av PATH-miljøvariabelen, og bruk deretter bare 5

tegn som starter med det 11. tegnet (hopper over 10) utvidet

resultat. Hvis lengden ikke er spesifisert, brukes den gjenværende som standard.

variabel verdi. Hvis begge verdiene (lengde og antall tegn å hoppe over)

er negative, vil neste verdi som brukes være lengden på variabelverdien

miljø lagt til den angitte hoppverdien eller spesifisert lengde.

vil trekke ut de siste 10 tegnene i PATH-variabelen.

vil trekke ut alle tegnene i PATH-variabelen bortsett fra de siste 2.

Endelig lagt til kjøretidsbindingsstøtte for miljøvariabler

miljø. Som standard er denne støtten deaktivert. /V kommandolinjebryter

CMD.EXE lar deg slå den på og av. For å få tilgang til hjelp, skriv inn CMD /?

Kjøretidsbinding for miljøvariabler er nyttig når du jobber rundt

begrensninger ved tidlig binding, som oppstår når teksten leses første gang

linje, og ikke når du utfører den.

Følgende eksempel demonstrerer det nye

problem ved bruk av tidlig variabel binding:

sett VAR=før

Hvis "%VAR%" == "før" (

if "%VAR%" == "etter" @echo Brødtekst for den interne sammenligningsoperatøren

Denne meldingen vil ikke vises, fordi %VAR% i BEGGE IF-uttrykk

erstattes på tidspunktet for første bruk i den første IF, inkludert i kroppen

den første IF-grenen, som er et sammensatt uttrykk. I IF inne

sammensatt uttrykk sammenligner faktisk verdiene til "før" og

"etter", som åpenbart er falsk.

Følgende eksempel viser en lignende feil:

sett LIST=

For %i i (*), sett LIST=%LIST% %i

i dette tilfellet vil listen over filer i gjeldende mappe aldri bli bygget. Istedenfor

Derfor vil verdien til LIST-variabelen være navnet på den sist funnet filen.

Igjen, dette skjedde fordi %LIST% bare erstattes én gang -

i øyeblikket for behandling av FOR-uttrykket, når listen fortsatt er tom.

Faktisk er kodebiten ovenfor ekvivalent med følgende eksempel:

for %i i (*), sett LIST= %i

der navnet på den sist funnet filen er lagret i LIST-variabelen.

Kjøretidsbinding for miljøvariabler skjer når

kjøretid, for deretter å oppnå de forventede resultatene gitt ovenfor

utdragene bør endres som følger:

problem ved bruk av tidlig variabel binding:

sett VAR=før

Sett VAR=etter

Hvis "!VAR!" == "etter" @echo Brødtekst for intern sammenligningsoperatør

Sett LIST=

For %i i (*) må du angi LIST=!LIST!%jeg

Flere variabler er tilgjengelige når forbedret kommandobehandling er aktivert

miljøer som ikke vises i listen som vises når du kaller opp SET-kommandoen.

Verdiene til disse variablene beregnes dynamisk hver gang de hentes.

Hvis brukeren eksplisitt definerer variabler med ett av disse navnene,

så overlapper denne definisjonen den tilsvarende dynamiske definisjonen,

beskrevet nedenfor:

%CD% - utvides til gjeldende kataloglinje.

%DATE% - Utvides til gjeldende dato med samme DATE-kommandoformat.

%TIME% - utvides til gjeldende dato ved å bruke TIME-kommandoformatet.

%RANDOM% - utvides til et tilfeldig desimaltall mellom 0 og 32767.

%ERRORLEVEL% - utvides til gjeldende ERRORLEVEL-verdi

%CMDEXTVERSION% - utvides til gjeldende versjonsverdi

avansert kommandobehandling.

%CMDCMDLINE% - Utvides til den opprinnelige kommandolinjen som kalte

kommandoprosessor.

    Team SETLOCAL brukes til å midlertidig endre verdiene til miljøvariabler i Windows batchfiler. Miljøendringer som gjøres etter å ha kjørt SETLOCAL-kommandoen, er lokale for gjeldende batchfil. For å gjenopprette deres tidligere verdier, må du gi kommandoen ENDLOCAL. Når slutten av batchfilen er nådd, utføres ENDLOCAL-kommandoen automatisk for alle gyldige SETLOCAL-kommandoer utstedt i den batchfilen, og verdiene til alle miljøvariabler gjenopprettes til tilstanden før SETLOCAL-kommandoen ble utført.

Kommandolinjeformat:

SETLOCAL | AKTIVERT FORSINKET UTVIDELSE | DEAKTIVER FORSINKET UTVIDELSE

Endre SETLOCAL-kommandoen når du aktiverer utvidet kommandobehandling:

SETLOCAL-kommandoen godtar valgfrie argumenter: ENABLEEXTENSIONS eller DISABLEEXTENSIONS. Dette lar deg aktivere eller deaktivere avansert kommandobehandling før kommandoen utføres. Se cmd /? for en detaljert forklaring. ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION Aktiverer eller deaktiverer utvidet forsinket miljøvariabel. Se SET /? for en detaljert forklaring. Disse endringene gjelder inntil ENDLOCAL-kommandoen matches, uavhengig av starttilstanden før SETLOCAL-kommandoen ble kalt.

Hvis SETLOCAL-kommandoen kalles med et argument, setter den feilkoden ERRORLEVEL. Hvis ett av de to gyldige argumentene er gitt, vil feilkoden være null, ellers vil 1 bli returnert i batchfiler for å finne ut om utvidet kommandobehandling er tilgjengelig, for eksempel:

VERIFY ANDRE 2>nul
SETLOCAL ENABLEEXTENSIONS
HVIS FEILNIVÅ 1 ekko Kan ikke aktivere avansert behandling

Denne gruppen med kommandoer fungerer fordi i tidligere versjoner av CMD.EXE satte ikke SETLOCAL-kommandoen verdien til ERRORLEVEL. En VERIFY-kommando med et ugyldig argument er nødvendig for å sette ERRORLEVEL til en verdi som ikke er null.

Ved bruk av miljøvariabler i kommandofiler er det en viss begrensning knyttet til at den tildelte verdien forblir uendret når den endres innenfor en gruppe kommandoer spesifisert i parentes, for eksempel i kommandoer HVIS eller TIL. For å omgå denne begrensningen, start kommandoprosessoren med /V:ON-parameteren og bruk utropstegn i stedet for prosenttegn for å få verdien som er akseptert av variabelen. I tillegg er det mulig å bruke standardoppstarten av kommandoprosessoren, men med lokal aktivering av denne modusen med kommandoen:

Forskjellen i resultatene ved bruk av variable verdier er ganske tydelig demonstrert av følgende batchfil:


@EKKO AV
sett VAR=før
if "%VAR%" == "før" (
sett VAR=etter
hvis "!VAR!" == "etter" @echo Med prosenttegn=%VAR% , Med spørsmålstegn=!VAR!

Team sett VAR=etter utføres i en subrutine avgrenset med parenteser, og hvis kommandoen fjernes Setlocal EnableDelayedExpansion eller ikke å bruke for å få verdien av en variabel VAR utropstegn, vil verdien forbli den gamle (det som ble satt før du gikk inn i subrutinen). Et lignende problem oppstår når verdien til en variabel endres i kommandosløyfen. TIL. For eksempel, for å få en liste over filer i gjeldende katalog, vil ikke en batchfil som dette fungere:

sett LIST=
for %%i i (*) må du angi LIST=%LIST% %%i
ekko %LIST%

Variabel verdi LISTE vil ikke bli endret inne i løkken. For at dette skal skje, må batchfilen endres som følger:

Setlocal EnableDelayedExpansion
sett LIST=
for %%i i (*) må du angi LIST=!LIST! %%jeg
ekko %LIST%
Nå, verdien av variabelen LISTE inne i en løkke TIL vil endre seg, sekvensielt tar på seg verdiene til filnavn atskilt med mellomrom ( sett LISTE=!LISTE! %%jeg)


Vise, sette og slette cmd.exe miljøvariabler.

SETT [variabel=[streng]]

variabel Navnet på miljøvariabelen.
streng En tegnstreng tilordnet den angitte variabelen.

Skriv inn SET uten parametere for å vise gjeldende miljøvariabler.

Endre SET-kommandoen når du aktiverer forbedret kommandobehandling:

Hvis du, når du ringer, bare spesifiserer variabelnavnet uten likhetstegn og verdi,
SET-kommandoen vil skrive ut verdiene til alle variabler hvis navn begynner med
fra den angitte linjen. For eksempel:

SET P

Denne kommandoen vil skrive ut verdiene til alle variabler hvis navn begynner med "P".

Hvis variabelnavnet ikke finnes i det gjeldende miljøet, returnerer SET-kommandoen
vil sette feilverdien til ERRORLEVEL 1.

SET-kommandoen tillater ikke likhetstegn i navnet
miljøvariabel.

SET-kommandoen støtter to ekstra brytere:

SET /A uttrykk
SET /P variabel=

/A-bryteren indikerer at strengen til høyre for likhetstegnet er numerisk
uttrykk hvis verdi beregnes. Uttrykksbehandleren er veldig
er enkel og støtter følgende operasjoner, oppført i synkende rekkefølge
prioritet:


Når du bruker logiske eller binære operatorer, må du
omslutt uttrykksstrengen i anførselstegn. Eventuelle ikke-numeriske strenger i uttrykket
behandles som navn på miljøvariabler hvis verdier er konvertert
i numerisk form før bruk. Hvis en variabel med det angitte navnet
ikke er definert i systemet, erstattes en nullverdi. Dette
lar deg utføre aritmetiske operasjoner med verdiene til miljøvariabler,
Dessuten trenger du ikke skrive inn %-tegn for å få verdier. Hvis laget
SET /A kalles fra kommandolinjen, ikke fra en batchfil, den sendes ut
den endelige betydningen av uttrykket. Til venstre for en hvilken som helst oppdragsoperatør
må være navnet på miljøvariabelen. Numeriske verdier behandles som
desimal, med mindre det innledes med et 0x-prefiks for heksadesimale tall,
og 0 for oktale tall. For eksempel, tallene 0x12,
og 022 representerer desimaltallet 18. Legg merke til notasjonen
oktale tall: 08 og 09 er ikke gyldige tall fordi i
Det oktale tallsystemet bruker ikke tallene 8 og 9.

/P-bryteren lar deg angi verdien til en variabel for den angitte inndatastrengen
bruker. Viser den angitte ledeteksten String før lesing
angitt streng. PromptString-ledeteksten kan være tom.

Substitusjon av miljøvariabler kan utvides som følger:

%PATH:str1=str2%

vil utvide effekten av PATH-miljøvariabelen ved å erstatte hver forekomst av "str1" i
utvidet resultat på "str2". "str2" kan være en tom streng for
effektivt fjerner forekomster av "str1" fra den utvidede utgangen. "str1" kan
start med en stjerne, i så fall vil den samsvare med en hvilken som helst
start av den utvidede utgangen til den første forekomsten av den gjenværende delen av "str1".

Du kan også bruke forlengelsesstrenger.

%PATH:~10,5%

vil utvide effekten av PATH-miljøvariabelen, og bruk deretter bare 5
tegn som starter med det 11. tegnet (hopper over 10) utvidet
resultat. Hvis lengden ikke er spesifisert, brukes den gjenværende som standard.
variabel verdi. Hvis begge verdiene (lengde og antall tegn å hoppe over)
er negative, vil neste verdi som brukes være lengden på variabelverdien
miljø lagt til den angitte hoppverdien eller spesifisert lengde.

%PATH:~-10%

vil trekke ut de siste 10 tegnene i PATH-variabelen.

%PATH:~0,-2%

vil trekke ut alle tegnene i PATH-variabelen bortsett fra de siste 2.

Endelig lagt til kjøretidsbindingsstøtte for miljøvariabler
miljø.
Som standard er denne støtten deaktivert. /V kommandolinjebryter
CMD.EXE lar deg slå den på og av. For å få tilgang til hjelp, skriv inn CMD /?

Kjøretidsbinding for miljøvariabler er nyttig når du jobber rundt
begrensninger ved tidlig binding, som oppstår når teksten leses første gang
linje, og ikke når du utfører den. Følgende eksempel demonstrerer det nye
problem ved bruk av tidlig variabel binding:

sett VAR=før
if "%VAR% " == "før" (
sett VAR=etter
if "%VAR%" == "etter" @echo Brødtekst for den interne sammenligningsoperatøren
)

Denne meldingen vil ikke vises, fordi %VAR% i BEGGE IF-uttrykk
erstattes på tidspunktet for første bruk i den første IF, inkludert i kroppen
den første IF-grenen, som er et sammensatt uttrykk. I IF inne
sammensatt uttrykk sammenligner faktisk verdiene til "før" og
"etter", som åpenbart er falsk. Følgende eksempel viser en lignende feil:

sett LIST=
for %i i (*) må du angi LIST=%LIST% %i
ekko%LISTE%

i dette tilfellet vil listen over filer i gjeldende mappe aldri bli bygget. Istedenfor
Derfor vil verdien til LIST-variabelen være navnet på den sist funnet filen.
Igjen, dette skjedde fordi %LIST% bare erstattes én gang -
i øyeblikket for behandling av FOR-uttrykket, når listen fortsatt er tom.
Faktisk er kodebiten ovenfor ekvivalent med følgende eksempel:

for %i i (*) do sett LIST=%i

der navnet på den sist funnet filen er lagret i LIST-variabelen.

Kjøretidsbinding for miljøvariabler skjer når
bruke et spesialtegn (utropstegn) for å indikere
utføre sammenligningen under kjøring. Hvis koblingsstøtte er aktivert
kjøretid, for deretter å oppnå de forventede resultatene gitt ovenfor
utdragene bør endres som følger:

sett VAR=før
if "%VAR% " == "før" (
sett VAR=etter
hvis "!VAR! " == "etter" @echo Brødtekst til den interne sammenligningsoperatøren
)

sett LIST=
for %i i (*) må du angi LIST=!LIST!
ekko%LISTE%

%jeg
Flere variabler er tilgjengelige når forbedret kommandobehandling er aktivert
miljøer som ikke vises i listen som vises når du kaller opp SET-kommandoen.
Verdiene til disse variablene beregnes dynamisk hver gang de hentes.
Hvis brukeren eksplisitt definerer variabler med ett av disse navnene,
beskrevet nedenfor:

så overlapper denne definisjonen den tilsvarende dynamiske definisjonen,

%CD% - utvides til gjeldende kataloglinje.

%DATE% - Utvides til gjeldende dato med samme DATE-kommandoformat.

%TIME% - utvides til gjeldende dato ved å bruke TIME-kommandoformatet.

%RANDOM% - utvides til et tilfeldig desimaltall mellom 0 og 32767.

%ERRORLEVEL% - utvides til gjeldende ERRORLEVEL-verdi

%CMDEXTVERSION% - utvides til gjeldende verdi for den utvidede kommandobehandlingsversjonen.
kommandoprosessor.

%CMDCMDLINE% - Utvides til den opprinnelige kommandolinjen som kalte

Miljøvariabler satt i Windows XP, som har levd i 2 år uten ominstallering:
%ALLUSERSPROFILE% = C:\Documents and Settings\Alle brukere
%CommonProgramFiles% = C:\Program Files\Common Files
%COMPUTERNAME% = "Datamaskinnavn"
%ComSpec% = C:\WINDOWS\system32\cmd.exe
%CYGWIN% = tty
%FP_NO_HOST_CHECK% = NEI
%NUMBER_OF_PROCESSORS% = 2
%OS% = Windows_NT
%Path% = C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOW S\System32\Wbem
%PATHEXT% = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.W SF;.WSH
%PROCESSOR_ARCHITECTURE% = x86
%PROCESSOR_IDENTIFIER% = x86 Family 6 Model 15 Stepping 2, GenuineIntel
%PROCESSOR_LEVEL% = 6
%PROCESSOR_REVISION% = 0f02
%ProgramFiles% = C:\Program Files
%PROMPT% = $P$G
%SystemDrive% = C:
%SystemRoot% = C:\WINDOWS
%TEMP% = C:\DOCUME~1\"Brukernavn"\LOCALS~1\Temp
%TMP% = C:\DOCUME~1\"Brukernavn"\LOCALS~1\Temp
%USERDOMAIN% = "Datamaskinnavn"
%USERNAME% = "Brukernavn"
%USERPROFILE% = C:\Documents and Settings\"Brukernavn"

%windir% = C:\WINDOWS Kommandolinje

Så la oss først finne ut hvordan du starter kommandolinjen. For å gjøre dette må du ha en fungerende datamaskin med et operativsystem.

Noen kommandoer, hvis du kjører under en vanlig brukerkonto, har kanskje ikke nok rettigheter til å utføre dem av sikkerhetsgrunner, så kjør alltid ledeteksten med administratorrettigheter. Det er 2 måter å starte kommandolinjen på:

I vinduet som vises, skriv cmd og klikk OK.

Et ledetekstvindu åpnes med svart bakgrunn.

2) En raskere måte: gjennom hurtigtastene Win + R, her også i vinduet som vises skriver vi cmd, trykk ok.

I Windows 8 kan du bare bruke metode 2, siden det ikke er noen Start-meny. La oss skrive vår første hjelpekommando, som vil vise en liste over alle tilgjengelige kommandoer med korte forklaringer.

Liste over alle eksisterende Windows-kommandolinjekommandoer:

ASSOC Skriv ut for å skjerme eller endre tilordninger basert på filnavn.
ATTRIB Se og endre filegenskaper.
BRUDD Låser eller låser opp forbedret CTRL+C-behandling i DOS.
BCDEDIT Angir egenskaper i oppstartsdatabasen som lar deg kontrollere den første oppstarten.
CACLS Viser data og endrer tilgangskontrolllister (ACLs) på filer.
RINGE Kaller en batchfil fra en annen, og kan også sende inndataargumenter.
CD
CHCP Utdata eller angi koding.
CHDIR Viser navnet eller flytter til en annen mappe.
CHKDSK Diagnostikk av stasjonen for feil.
CHKNTFS Viser eller endrer stasjonsdiagnostikk under oppstart.
CLSO sletter visningen av alle symboler.
CMD Starter et Windows-kommandolinjeprogram. Du kan kjøre et uendelig antall av dem på én datamaskin. De vil jobbe uavhengig av hverandre.
FARGE Endrer og angir hovedbakgrunnen til vinduet og selve skriftene.
KOMP Viser forskjeller og sammenligner innholdet i to filer.
KOMPAKT Endrer og viser filkomprimering i NTFS.
KONVERTERE Konverterer FAT-diskvolumer til NTFS. Gjeldende stasjon kan ikke endres.
KOPIERE Oppretter en kopi av en fil eller filer og plasserer dem på det angitte stedet.
DATO Viser eller stiller inn gjeldende dato.
DELØdelegger én eller flere filer samtidig.
DIR Viser navn på filer og mapper med opprettelsesdatoen i gjeldende mappe eller spesifisert i mappeinnstillingene.
DISKKOMP Sammenligner og viser forskjellene mellom 2 diskettstasjoner.
DISKKOPI Oppretter en kopi av innholdet på en diskettstasjon til en annen.
DISKPART Viser og endrer egenskapene til en diskpartisjon.
DOSKEY Modifiserer og gjenoppretter kommandolinjer; lager makroer.
DRIVERQUERY Viser informasjon om status og attributter til en enhetsdriver.
EKKO Viser tekstinformasjon og endrer visningsmodus for kommandoer på skjermen.
ENDLOKALT Slutter lokaliseringen av miljøet for batchfilen.
VISKEØdelegger en eller flere filer.
Avslutter kommandolinjeprogrammet
F.C. Viser forskjellene mellom to filer eller to sett med filer og sammenligner dem
FINNE Søker etter en tekststreng i filer eller i én fil.
FINDSTR Avansert søk etter tekststrenger i filer.
TIL Syklus. Gjentar utførelse av samme kommando et spesifisert antall ganger
FORMAT Formatere stasjonen for bruk med Windows.
FSUTIL Viser og angir filsystemattributter.
FTYPE Lar deg endre og vise filtyper, som hovedsakelig brukes ved samsvar med filnavn.
GÅ TIL Overfører kontrollen til en annen spesifisert kommando.
GPRESULTAT Viser gruppepolicyinformasjon for en datamaskin eller bruker.
GRAFTABL Lar Windows vise utvidede tegn i grafisk modus.
HJELP Viser alle data om eksisterende Windows-kommandoer.
ICACLS Viser, endrer, arkiverer eller gjenoppretter tilgangskontrollister for filer og mapper.
HVIS Utfører kommandoer basert på en gitt tilstand.
MERKELAPP Oppretter, endrer og ødelegger volumetiketter for stasjoner.
M.D. Oppretter en tom katalog.
MKDIR Oppretter en tom katalog.
MKLINK Skaper symbolske og harde lenker
MODUS Konfigurerer systemenheter.
FLERE Viser informasjon sekvensielt i blokker på størrelse med én skjerm.
FLYTTE Flytter filer fra ett sted til et annet.
ÅPNE FILER Viser filer som er åpne i en delt mappe av en ekstern bruker.
STI Viser eller setter hele banen til kjørbare filer.
PAUSE Slutter å utføre kommandolinjekommandoer og viser informasjonstekst.
POPD Gjenoppretter den forrige aktive mappeverdien som ble lagret med PUSHD-kommandoen.
TRYKK Skriver ut innholdet i en tekstfil.
SPRING Endrer Windows-kommandolinjemeldingen.
PUSHD Lagrer den aktive mappeverdien og flytter til en annen mappe.
R.D.Ødelegger en katalog.
KOMME SEG Gjenoppliver lesbare data fra en dårlig eller skadet harddisk.
R.E.M. Plasserer kommentarer i batchfiler og CONFIG.SYS-filen.
REN Endrer navnet på både filer og mapper.
GJENNOMFØR Lignende team REN.
ERSTATT Bytter filer.
RMDIRØdelegger en katalog.
ROBOKOPI Avansert verktøy for kopiering av filer og hele mapper
SETT Viser, setter og ødelegger Windows-miljøvariabler.
SETLOCAL Lokaliserer miljøendringer i en batchfil.
S.C. Lar deg jobbe med tjenester
SCHTASKS Lar deg kjøre alle programmer og sekvensielt utføre de nødvendige kommandoene i henhold til en gitt plan
SKIFTE Endrer posisjonen (forskyvningen) av erstattede parametere for en batchfil.
SLUTNING Slår av datamaskinen.
SORTERE Sorterer inndata i henhold til angitte parametere.
START Starter et program eller en kommando i et nytt vindu.
SUBST Tildeler et stasjonsnavn til den angitte banen.
SYSTEMINFO Viser informasjon om operativsystemet og datamaskinkonfigurasjonen.
OPPGAVELISTE Viser en liste over alle kjørende prosesser med ID-ene deres.
TASKKILL"Drap" eller stopper prosessen.
TID Stiller inn og viser systemtiden.
TITTEL Angir vindusnavnet for gjeldende økt for kommandolinjetolkeren CMD.EXE
TRE Viser stasjonskataloger i en praktisk visuell form.
TYPE Viser innholdet i tekstfiler.
VER Viser kort informasjon om Windows-versjonen.
VERIFISERE Sjekker for filskrivingsfeil på stasjonen.
VOL Viser etikettene og serienummeret til stasjonsvolumet.
XCOPY Oppretter en kopi av filer.
WMIC Skriver ut WMI på kommandolinjen.