Okruženje ljuske Cmd.exe definirano je varijablama koje kontroliraju ponašanje ljuske i operativnog sustava. Možete definirati ponašanje okruženja ljuske ili cijelog okruženja operativnog sustava koristeći dvije vrste varijabli okruženja: sistemske i lokalne. Varijable okruženja sustava definiraju ponašanje globalnog okruženja operativnog sustava. Lokalne varijable okoline kontroliraju ponašanje okoline u određenoj instanci Cmd.exe.
Varijable okruženja sustava unaprijed su definirane u operativnom sustavu i dostupne su svim procesima Windows XP. Samo korisnici s administrativnim ovlastima mogu mijenjati ove varijable. Ove se varijable najčešće koriste u skriptama za prijavu.
Lokalne varijable okoline dostupne su samo kada je korisnik za kojeg su stvorene prijavljen. Lokalne varijable iz košnice HKEY_CURRENT_USER vrijede samo za trenutnog korisnika, ali definiraju ponašanje globalnog okruženja operacijskog sustava.
U sljedeći popis predstavili Različite vrste varijable u silaznom redoslijedu prioriteta.
- Ugrađene varijable sustava
- Varijable sustava košnice HKEY_LOCAL_MACHINE
- Lokalne varijable košnice HKEY_CURRENT_USER
- Sve varijable okoline i staze navedene su u datoteci Autoexec.bat.
- Sve varijable okoline i staze navedene su u skripti za prijavu (ako postoji).
- Varijable koje se interaktivno koriste u skripti ili batch datoteci
U naredbena ljuska Svaka instanca Cmd.exe nasljeđuje okruženje svoje roditeljske aplikacije. Stoga možete promijeniti varijable u novom okruženju Cmd.exe bez utjecaja na okruženje nadređene aplikacije.
Sljedeća tablica pruža popis varijabli sustava i lokalne okoline za Windows XP.
Varijabilna | Opis |
|
---|---|---|
%ALLUSERSPROFILE% | Lokalni | Vraća položaj profila "Svi korisnici". |
Lokalni | Vraća zadanu lokaciju za podatke aplikacije. |
|
Lokalni | Vraća putanju do trenutne mape. |
|
Lokalni | Vraća naredbeni niz koji je korišten za pokretanje ove instance Cmd.exe. |
|
Sustav | Vraća broj verzije trenutna proširenja rukovatelj naredbama. |
|
Sustav | Vraća naziv računala. |
|
Sustav | Vraća putanju do naredbene ljuske koja se izvršava. |
|
Sustav | Vraća trenutne podatke. Koristi isti format kao naredba datum/t. Stvoreno naredbom Cmd.exe. |
|
Sustav | Vraća kod pogreške zadnje korištene naredbe. Vrijednost različita od nule obično označava pogrešku. |
|
Sustav | Vraća naziv lokalnog pogona radna stanica povezan s korisničkim matičnim imenikom. Postavite na temelju lokacije glavnog imenika. Korisnikov matični direktorij naveden je u dodatku " Lokalni korisnici i grupe." |
|
Sustav | Povratak puni put u korisnički matični imenik. Postavite na temelju lokacije glavnog imenika. Korisnikov matični direktorij naveden je u dodatku Lokalni korisnici i grupe. |
|
Sustav | Vraća mrežni put do korisničkog dijeljenog matičnog direktorija. Postavite na temelju lokacije glavnog imenika. Korisnikov matični direktorij naveden je u dodatku Lokalni korisnici i grupe. |
|
Lokalni | Vraća naziv kontrolera domene koji je autentificirao trenutnu sesiju. |
|
%NUMBER_OF_PROCESSORS% | Sustav | Određuje broj procesora instaliranih na računalu. |
Sustav | Vraća naziv operativnog sustava. Kada koristite Windows 2000, naziv operativnog sustava pojavljuje se kao Windows_NT. |
|
Sustav | Određuje put pretraživanja za izvršne datoteke. |
|
Sustav | Vraća popis ekstenzija datoteka koje operativni sustav smatra izvršnima. |
|
%PROCESSOR_ARCHITECTURE% | Sustav | Vraća arhitekturu procesora. Vrijednosti: x86, IA64. |
%PROCESSOR_IDENTFIER% | Sustav | Vraća opis procesora. |
%PROCESSOR_LEVEL% | Sustav | Vraća broj modela procesora instaliranog na računalu. |
%PROCESSOR_REVISION% | Sustav | Vraća broj revizije procesora. |
Lokalni | Vraća opcije naredbenog retka za trenutni tumač. Stvoreno naredbom Cmd.exe. |
|
Sustav | Vraća proizvoljni decimalni broj od 0 do 32767. Stvoreno naredbom Cmd.exe. |
|
Sustav | Vraća naziv pogona koji sadrži korijenski direktorij sustava Windows XP (tj. sistemski direktorij). |
|
Sustav | Vraća lokaciju sustava Windows imenik XP. |
|
Sustav i korisnik | Vraća zadane privremene mape koje koriste aplikacije koje su dostupne prijavljenim korisnicima. Neke aplikacije zahtijevaju varijablu TEMP, druge zahtijevaju varijablu TMP. |
|
Sustav | Vraća trenutno vrijeme. Koristi isti format kao naredba vrijeme/t. Stvoreno naredbom Cmd.exe. |
|
Lokalni | Vraća naziv domene koja sadrži popis korisničkih računa. |
|
Lokalni | Vraća ime prijavljenog korisnika. |
|
Lokalni | Vraća položaj profila trenutnog korisnika. |
|
Sustav | Vraća lokaciju direktorija operativnog sustava. |
0.00 (1 )
Opći pristup.
Naredbene datoteke su tekstualne datoteke s ekstenzijom šišmiš ili cmd, čije linije predstavljaju naredbe ili nazive izvršnih datoteka. Kada pokrenete batch datoteku, kontrolu preuzima naredbeni procesor operativnog sustava (često se naziva i tumač naredbi), koji sekvencijalno čita i tumači retke u batch datoteci. Za Windows9X to je učinjeno naredba.com, za WinNT/2K/XP - cmd.exe. Linije skupne datoteke mogu sadržavati naredbe iz samog procesora naredbi (FOR, GOTO, IF itd.) ili nazive izvršnih modula (net.exe, regedit.exe, win.com itd.). Na operativnim sustavima WinNT/2K/XP možete dobiti kratka informacija prema sastavu naredbi pomoću naredbenog retka:
ili posebnom naredbom:
POMOĆ Ime naredbe
Za prikaz teksta pomoći ne na zaslonu, već u datoteci, možete koristiti izlazno preusmjeravanje . Kada koristite naredbeni redak, zadani ulazni uređaj je tipkovnica, a izlazni uređaj je zaslon, no ti se uređaji mogu ponovno mapirati pomoću znakova za preusmjeravanje
< - preusmjeravanje unosa
> - preusmjeravanje izlaza (ili > > - preusmjeravanje na postojeću datoteku, kada se izlazni podaci dodaju na kraj datoteke.)
Za izlaz toka podataka naredbe
POMOZITEu datoteci help.txt naredbeni redak će biti sljedeći:POMOĆ > pomoć.txt
Za prikaz pomoći za naredbu GOTO u datoteci goto.txt:
POMOĆ GOTO > goto.txt
Korištenje varijabli okruženja.
U skupne datoteke može, i često treba, koristiti varijable okoline - varijable čije vrijednosti karakteriziraju okruženje u kojem se izvršava naredba ili batch datoteka. Vrijednosti varijabli okoline generiraju se kada se OS podigne i kada se korisnik registrira u sustavu, a mogu se postaviti i pomoću naredbePOSTAVITE, čiji je format:
SET [varijabla=[string]]
varijabla Naziv varijable okoline.
crta Niz znakova dodijeljen navedenoj varijabli.
Na primjer, naredbeni redak
SET mynane=Vasja
će dodati varijablu myname koja ima vrijednost Vasya.
Možete dobiti vrijednost varijable u programima i skupnim datotekama korištenjem njenog imena okruženog znakovima postotka ( %) . Na primjer naredba
prikazat će riječ vrijeme i naredbu
prikazat će vrijednost vremenske varijable, koja uzima vrijednost trenutnog vremena.
I naredbeni redak
SET PATH=C:myprog;%path%
će dodati na put pretraživanja izvršni programi, opisan vrijednošću varijable PATH, direktorij C:myprog
Izvođenje naredbe SET bez parametara uzrokuje prikaz trenutnih vrijednosti varijabli na ekranu, u obliku:
NUMBER_OF_PROCESSORS=1 - broj procesora
OS=Windows_NT - vrsta OS-a
Path=E:WINDOWSsystem32;E:WINDOWS;E:Program FilesFar - put traženja izvršnih datoteka.
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH - ekstenzije za izvršne datoteke.
PROCESSOR_ARCHITECTURE=x86 - arhitektura procesora.
PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 Korak 1, AuthenticAMD - identifikator procesora.
PROCESSOR_LEVEL=6 - razina procesora (broj modela).
PROCESSOR_REVISION=0801 - verzija procesora.
ProgramFiles=E:Program Files - put do mape "Program Files".
PROMPT=$P$G - format odzivnika naredbenog retka $P - staza za trenutni imenik$G - znak ">".
SystemDrive=E: - slovo pogona sustava.
SystemRoot=E:WINDOWS - direktorij Windows OS-a.
Vrijednosti nekih varijabli ne vraća naredba SET. Ovo su varijable čije se vrijednosti dinamički mijenjaju:
%CD% - Uzima vrijednost niza trenutnog imenika.
%DATE% - Prihvaća vrijednost trenutni datum.
%TIME% - Prihvaća trenutnu vrijednost vremena.
%RANDOM% - Uzima slučajnu vrijednost decimalni broj u rasponu 1 -32767.
%ERRORLEVEL% - Prihvaća trenutnu vrijednost izlaznog koda zadatka ERRORLEVEL
%CMDEXTVERSION% - Uzima vrijednost verzije procesora naredbi CMD.EXE za proširenu obradu naredbi.
%CMDCMDLINE% - Uzima vrijednost linije koja je pozvala ljusku.
Za pregled vrijednosti varijable možete koristiti naredbeni redak:
ECHO %varijabla%
Ulazni parametri za batch datoteku.
Moguće je proslijediti parametre naredbenog retka u naredbenu datoteku i koristiti njihove vrijednosti u izjavama u samoj naredbenoj datoteci.
BAT datoteka< параметр1 > , < параметр2 >, ... < параметрN >
U samoj batch datoteci, prvi parametar će biti dostupan kao varijabla %1 , drugi - %2 i tako dalje. Sam naziv batch datoteke dostupan je kao varijabla %0 . Na primjer, kreirajmo batch datoteku čiji će zadatak biti prikazati vrijednosti unesenih parametara na ekranu. Obično je naredba koja se koristi za prikaz teksta
JEKA< текст >
Međutim, ako se tekst zamijeni s %1, vraća se prvi parametar, s %2 - drugi, itd.
Stvorite datoteku parm.bat sa sljedećim sadržajem:
echo Prvi parametar=%1
echo Drugi parametar=%2
echo Treći parametar = %3
i pokrenite ga sljedećom naredbom:
parm.bat PRVI drugi “dvije riječi”
Nakon što ga izvršite, shvatit ćete kako radi i da parametri s razmacima moraju biti u dvostrukim navodnicima. Kako bi obrađeni naredbeni procesor linije nisu bile prikazane na ekranu, možete koristiti naredbu
JEKA ISKLJUČENA, stavljajući ga u prvi redak batch datoteke. Da bi linija u batch datoteci bila zanemarena od strane ljuske, postavite je na početak retkaR.E.M.< пробел > . Na ovaj način možete postaviti komentare, koji su često korisni u velikim paketnim datotekama:rem ECHO OFF isključuje način prikaza sadržaja redaka naredbene datoteke na ekranu
REM će samo prikazati rezultat njihovog izvršenja.
echo Prvi parametar=%1
echo Drugi parametar=%2
echo Treći parametar = %3
Pokušajte zamijeniti ECHO OFF sa @ECHO OFF - rezultat govori sam za sebe. Redak koji isključuje izlazni način više se ne prikazuje na ekranu.
Prijelazi i oznake.
U batch datotekama možete koristiti naredbe uvjetnog skoka koje mijenjaju logiku svog rada ovisno o ispunjenju određenih uvjeta. Da bismo ilustrirali kako koristiti uvjetne skokove, stvorimo skupnu datoteku čija će svrha biti dodijeliti unaprijed određeno slovo pogona prijenosni medij, koji će se koristiti kao flash pogoni. Uvjeti su sljedeći - postoje 2 flash pogona, od kojih bi jedan trebao biti vidljiv u Exploreru kao pogon X:, a drugi - kao pogon Y: bez obzira na kojem USB priključak povezani su. Pretpostavit ćemo da pravi kotači može se povezati kao F: ili G: Identificirat ćemo diskove po prisutnosti datoteke s određenim imenom (bolje je učiniti takvu datoteku skrivenom u korijenskom direktoriju i nazvati je neuobičajeno):
Flashd1.let - na prvom disku
Flashd2.let - na drugom
Oni. Svrha skupne datoteke je provjeriti prisutnost izmjenjivi diskovi F: I G: datoteke Flashd1.let ili Flashd2.let i, ovisno o tome koji je prisutan, dodijelite slovo pogona X: ili Y:
Za traženje datoteke na disku koristite naredbu
AKO POSTOJI:AKO POSTOJI naredba za naziv datoteke
Najlakši način da ga koristite kao naredbu jeSUBST, koji odgovara nazivu pogona i direktoriju.
SUBST X: C: - stvara virtualni disk X:, čiji će sadržaj biti korijenski direktorij pogona C:
Napravite paketnu datoteku setXY.bat sa sljedećim redovima:
Nakon izvršavanja takve datoteke, imat ćete pogone X: i Y: Ali ako ponovno pokrenete takvu datoteku, naredba SUBST prikazat će poruku o pogrešci - nakon svega, pogoni X: i Y: već postoje.
Preporučljivo je zaobići izvršavanje SUBST-a ako su virtualni diskovi X: i Y: već stvoreni (ili ih izbrisati pomoću SUBST-a s -d opcijom prije montiranja). Izmijenite batch datoteku pomoćuIĆI- prijenos kontrole na liniju skupne datoteke prema naljepnici.
Oznaka GOTO
Oznaka mora biti u zasebnom retku i započeti dvotočkom. Izmijenimo našu batch datoteku kako ne bismo dobivali poruke o pogrešci:
REM ako X ne postoji - onda idite na oznaku SETX
AKO NE POSTOJI X: GOTO SETX
REM ako X postoji: - prijeđimo na provjeru prisutnosti Y:
AKO POSTOJI G:flashd1.let SUBST X: G:
AKO POSTOJI F:flashd1.let SUBST X: F:
REM ako Y: postoji - dovršite batch datoteku.
AKO POSTOJI Y: IDITE NA IZLAZ
AKO POSTOJI G:flashd2.let SUBST Y: G:
AKO POSTOJI F:flashd2.let SUBST Y: F:
REM izlaz iz skupne datoteke
Poruka o pogrešci SUBST je nestala. Znakovi grešaka prilikom izvršavanja naredbi mogu se pratiti u samoj naredbenoj datoteci analizom varijableERRORLEVEL, čija se vrijednost formira tijekom izvođenja većine programa. ERRORLEVEL je 0 ako je program završio bez grešaka i 1 ako je došlo do greške. Mogu postojati i druge vrijednosti ako su navedene u programu koji se izvršava.
Također možete koristiti batch datoteku kao naredbu u retku u batch datoteci. Štoviše, za prijenos i povratak natrag na točku izvršenja pozivne batch datoteke koristi se naredbaPOZIV. Kreirajmo naredbenu datoteku test.bat sa sljedećim sadržajem:
ECHO Poziv 1.bat
ECHO Povratak.
I 1.bat datoteka koja sadrži naredbuPAUZA,obustava izvršenja batch datoteke dok se ne pritisne bilo koja tipka.
Prilikom izvršavanja test.bat, na ekranu će se prikazati poruka
Poziv 1.bat
a upravljanje će dobiti 1.bat s naredbom za pauzu. Nakon pritiska tipke na tipkovnici, kontrola će biti dana naredbenom retku "ECHO Return." i to će biti prikazano na ekranu
Ako uklonite CALL iz test.bat, tada se povratak iz datoteke 1.bat neće izvršiti. Usput, prijenosom kontrole na batch datoteku, možete je organizirati u petlju. Pokušajte dodati sljedeći redak na kraj test.bat datoteke:
Možete izaći iz petlje batch datoteke pritiskom na kombinaciju CTRL-Break. Moguće je koristiti naredbu CALL za pozivanje procedure unutar batch datoteke. U ovom slučaju ime se ne koristi kao argument vanjska datoteka, i oznaka:
....
poziv:proc1
....
:proc1
....
Izlaz
....
Stvaranje datoteka.
U sustavu Windows ne postoji posebna naredba za stvaranje datoteke, ali možete jednostavno bez nje na nekoliko načina:
Kopiranje iz konzole u datoteku
COPY CON myfile.txt
Kada se ova naredba izvrši, podaci s tipkovnice (CON uređaja) bit će zapisani u datoteku myfile.txt. Pritisnite F6 ili CTRL-Z kombinacije dovršit će izlaz.
Preusmjeravanje izlaza
ECHO 1 > moja datoteka.txt
Pokretanje ove naredbe stvorit će datoteku myfile.txt koja sadrži znak "1"
Kombinacija preusmjeravanja ulaza i izlaza:
COPY CON > moja datoteka.txt< xyz
Prilikom izvođenja ove naredbe, kao i u prvom slučaju, koristi se kopiranje s konzole u datoteku, ali umjesto unosa s tipkovnice koristi se unos s nepostojećeg uređaja xyz. Sustav će prikazati poruku da takav uređaj ne postoji, ali će prazna datoteka myfile.txt biti uspješno kreirana.
Vrlo jednostavna opcija je kopiranje s fiktivnog uređaja s imenom nula podnijeti.
kopiraj null myfile.txt
Ako često morate stvarati prazne datoteke, možete pripremiti vlastitu batch datoteku (na primjer - newfile.bat ili, još bolje, - nf.bat), i nazvati stvorena datoteka proslijedite ga kao parametar pri pokretanju.
Sadržaj datoteke:
Postavite ovu skupnu datoteku u svoj sistemski direktorij (C:windowssystem32 ili bilo koji drugi na vašem PATH putu pretraživanja).
Naredbeni redak:
nova datoteka.bat moja datoteka.txt
Ili
nf.bat moja datoteka.txt
Ili
nf moja datoteka.txt
Evo vašeg tima nf za stvaranje prazna datoteka na naredbenoj liniji.
Dodjeljivanje istog slova pogona izmjenjivom pogonu.
Cilj je osigurati da prijenosni USB pogon (flash disk) uvijek bude dostupan pod istim slovom, bez obzira na kojem se računalu koristi i kako je povezan. Da bismo ga riješili, koristit ćemo naredbu SUBST već spomenutu gore. Odaberimo željeno slovo za prijenosni disk, na primjer - X. Naziv diska s kojeg je pokrenuta batch datoteka dostupan je kao varijabla %~d0. Stvorite skupnu datoteku sa sljedećim sadržajem: @echo isključen
subst X: %~d0
što znači stvoriti virtualni disk X:, koji je povezan sa fizički disk, odakle je pokrenuta batch datoteka.
Dodatni uvid u vrijednosti zamjene za varijablu %0 može se dobiti iz sljedeće batch datoteke:
@echo isključen
OBRADA ODJEKA DATOTEKE - %0
ECHO Datum/vrijeme kreiranja/modifikacije batch datoteke - %~t0
Putanja paketne datoteke ECHO - "%~f0"
ECHO disk s naredbenom datotekom - %~d0
ECHO Direktorij paketne datoteke - "%~p0"
ECHO Naziv paketne datoteke - %~n0
ECHO Batch file ekstenzija - %~x0
JEKA Kratko ime i proširenje - %~s0
ECHO Atributi paketne datoteke - %~a0
ECHO Veličina paketne datoteke - %~z0
Stvaranje generacija arhiva na temelju datuma i vremena.
Idemo riješiti sljedeći problem - potrebno je kreirati arhivu datoteka koja se nalazi u direktoriju C:Program FilesFAR. Ime arhivska datoteka treba se sastojati od trenutnog vremena (sati.minute.sekunde - HH.MM.SS.rar), i treba ga smjestiti u novi katalog, čiji se naziv mora sastojati od tekućeg datuma (dan.mjesec.godina - DD.MM.GGGG). Za arhiviranje ćemo koristiti RAR arhiver. Format pokretanja za izradu arhive:
RAR a -r< путь и имя архива > < Путь и имя архивируемых данных >
a- naredba za stvaranje arhive.
-r- ključ koji određuje arhiviranje poddirektorija (od in izvorna mapa postoje poddirektorije).
Dakle, da biste riješili problem, morate ispravno stvoriti imena i staze za RAR. Za to ćemo koristiti sljedeće faktore:
Datum dobiven iz varijable %DATE% when standardne postavke regionalne postavke izgledaju ovako: Postavi VDATE=%datum:~3% Napravite direktorij na disku C:, čije je ime = trenutni datum iz varijable VDATE: MD C:\%VDATE% Vrijeme dobiveno iz varijable %TIME%: Pokrenimo arhivar: Sada možete stvoriti skupnu datoteku sa sadržajem: Postavi VDATE=%datum:~3% Takva skupna datoteka može se izvršiti putem automatskog učitavanja ili kao dio skripte, kada se korisnik prijavi u domenu ili korištenjem planera u određeno vrijeme, a uvijek ćete imati na raspolaganju vremenski raspoređene arhive kritičnih podataka.
Ova paketna datoteka stvara arhive sadržaja mape "Moji dokumenti" korisnika Win2K/XP, smještajući ih u direktorije |
U ovom članku:
- Definiranje varijabli
- Varijable naredbenog retka (parametri poziva bat datoteke)
- IF uvjetni operator
- Funkcije
- Korištenje povratnih vrijednosti (obrada izlaznog koda)
Definiranje varijabli
POSTAVITE<Имяпеременной>=<Значениепеременной>
Naredba SET je proširenje sposobnosti operacijskog sustava da manipulira parametrima. Određuje varijablu čija je vrijednost zamijenjena njezinim imenom kad god se to ime koristi između znakova postotka. Dakle, ako je postavljena (varijabla koju mnoge igre koriste zvučna kartica Računalo):
SET BLASTER=A220 I5 D1 P330
tada kada koristite sljedeću konstrukciju u batch datoteci:
ECHO %BLASTER%
Na ekranu će se prikazati "A220 I5 D1 P330". Pozivaju se varijable definirane naredbom SET varijable okoline okruženju i vidljivi su nakon izvođenja dok se DOS ponovno ne pokrene (osim ako se ručno ne promijeni u memoriji). To jest, može se koristiti iz jedne skupne datoteke ili programa nakon što je specificiran u drugoj. Najpoznatija je varijabla PATH, koja je skup staza za brzo traženje datoteka. Postavlja se u datoteci autoexec.bat.
Varijable naredbenog retka
(parametri za pozivanje bat datoteke)
%<цифра 0-9>
Kao i u svakom jeziku, u jeziku skupne datoteke Moguće je koristiti varijable primljene kao parametre u bat datoteci.
Može postojati ukupno 10 istovremeno postojećih nezavisnih varijabli. Za pisanje složeni programi ovo je prilično malo, iako su 3-4 često dovoljna za normalan rad. Vrijednost varijable jednaka je vrijednosti odgovarajućeg parametra iz naredbenog retka. Varijabla %0 sadržavat će naziv .bat datoteke i, ako ste ga naveli, put do nje. To jest, ako ste pokrenuli datoteku abc.bat sa sljedećim parametrima:
abc.bat a bc def
tada će varijabla %0 sadržavati vrijednost abc.bat , %1 će sadržavati vrijednost a , %2 će sadržavati bc , a %3 će sadržavati def . Ovo se svojstvo naširoko koristi za stvaranje raznovrsnih skupnih datoteka kada se radi o operacijama koje se ponavljaju.
Da biste dobili više od 10 varijabli iz naredbenog retka, možete koristiti naredbu SHIFT.
Naredba SHIFT omogućuje korištenje više od 10 parametara naredbenog retka. Međutim, odgovarajući raniji parametri se gube. Drugim riječima, naredba SHIFT pomiče sve vrijednosti varijabli jedan korak ulijevo. To jest, varijabla %0 će sadržavati vrijednost koja je prethodno bila sadržana u varijabli %1, a varijabla %1 će sadržavati vrijednost varijable %2 prije pomaka. Međutim, ovu operaciju je ireverzibilan, odnosno nemoguće je pomaknuti varijable unatrag.
IF uvjetni operator
srećom, tumač naredbi cmd.exe u modernim Windowsima 2000 i novijim podržava blokove naredbi u konstrukcijama grananja, eliminirajući potrebu za korištenjem IF-ova s oznakama. Blokovi naredbi su u zagradama. Izgleda ovako (imitirajući stil uvlačenja C/C++):
ako uvjet (
Rem naredbe grane 'then'
Rem...
) inače (
Rem naredbe grane 'else'
Rem...
Konkretan primjer koristi:
@echo isključen
postavite BUILDMODE=%1
if "%BUILDMODE%" == "" (
Echo FAIL: potreban je argument ^(--debug, --release^)
Izlaz /b 1
rem Uklonite sve crtice iz argumenta radi pojednostavljenja obrade
postavi BUILDMODE=%BUILDMODE:-=%
if "%BUILDMODE%" == "debug" (
Postavite CCFLAGS=/Od /MDd /Z7
) inače (
Postavite CCFLAGS=/O2 /MD
Po mom mišljenju, s tim je sasvim moguće živjeti. No, kao i uvijek, život nije tako jednostavan kao što se čini. Postoji jedan problem. Varijable koje se koriste u blokovima then i else proširuju se prije nego što blokovi počnu izvršavati, a ne tijekom izvršenja. U gornjem primjeru to ne uzrokuje probleme, ali u sljedećem hoće:
if "%BUILDMODE%" == "debug" (
Echo INFO: Postavljanje načina rada okruženja za otklanjanje pogrešaka
Postavite OPTFLAGS=/Od
Postavite CCFLAGS=%OPTFLAGS% /MDd /Z7
) inače (
Echo INFO: Postavljanje načina otpuštanja okruženja
Postavite OPTFLAGS=/O2
Postavite CCFLAGS=%OPTFLAGS% /MD
Kvaka je u tome što će se u oba bloka zamjena varijable OPTFLAGS dogoditi prije nego što se promijeni tijekom izvođenja tog bloka. Sukladno tome, CCFLAGS će biti ispunjen vrijednošću koju je OPTFLAGS imao u vrijeme početka izvođenja ovog if bloka.
Ovaj problem je riješen korištenjem odgođene ekspanzije varijable. Varijable sadržane u !…! umjesto %...% , njihova će se značenja otkriti tek u trenutku izravne uporabe. Ovaj način rada onemogućeno prema zadanim postavkama. Možete ga omogućiti korištenjem /V:ON prekidača prilikom pozivanja cmd.exe ili korištenjem naredbe:
u tekstu same bat datoteke. Druga metoda mi se čini prikladnijom - nije baš cool zahtijevati od nekoga da pokrene vašu skriptu s određenim parametrom.
Uz to, prethodni "pogrešni" primjer mogao bi se ispraviti ovako:
setlocal enablelateyeexpansion
if "%BUILDMODE%" == "debug" (
Echo INFO: Postavljanje okruženja načina otklanjanja pogrešaka
Postavite OPTFLAGS=/Od
Postavite CCFLAGS=!OPTFLAGS! /MDd /Z7
) inače (
Echo INFO: Postavljanje okruženja načina otpuštanja
Postavite OPTFLAGS=/O2
Postavite CCFLAGS=!OPTFLAGS! /DOKTOR MEDICINE
Sada je ovo gotovo potpuni if-then-else blok. Skoro, jer ako u nekoj od echo naredbi naiđete na zatvarajuću zagradu, tada je trebate izbjeći znakom ^, inače će se parser zbuniti...
Ali u svakom slučaju, ovo je puno bolje od sulude količine oznaka i prijelaza.
Funkcije
Je li moguće stvoriti funkciju u bat datoteci? Da, možete. Štoviše, ponekad je čak i potrebno. Istina, ove se funkcije mogu uvjetno nazvati.
Postoji posebna sintaksa za naredbu poziva, koja vam omogućuje da odete do oznake u istoj bat datoteci, pamteći mjesto odakle je ovaj poziv upućen:
argumenti call:label
Funkcija se vraća naredbom:
izlaz /b [neobavezni povratni kod]
Ključ /b je ovdje vrlo važan: bez njega nećete izaći iz funkcije, već iz skripte općenito.
Za detalje upišite u naredbeni redak:
poziv/?
Izlaz /?
Zanimljivo, naredba poziva s ovom sintaksom podržava rekurzivni pozivi S automatsko stvaranje novi okvir za promjenjive argumente %0-%9. Ponekad ovo može biti korisno. Evo klasičnog primjera rekurzivnog faktorijelnog izračuna u jeziku naredbi:
@echo isključen
poziv: faktorijel %1
echo %RESULT%
Izlaz
rem Funkcija za izračunavanje vrijednosti faktorijela
rem Prijava:
rem %1 Broj za koji želite izračunati faktorijel
rem Izlaz:
rem %RESULT% Faktorska vrijednost
:faktorijel
ako je %1 == 0 (
Postavite REZULTAT=1
Izlaz /b
ako je %1 == 1 (
Postavite REZULTAT=1
Izlaz /b
postavi /a PARAM=%1 - 1
poziv:faktorij %PARAM%
postavi /a REZULTAT=%1 * %RESULT%
izlaz /b
Primjer rada:
> faktorijel.bat 10
3628800
Korištenje povratnih vrijednosti
(izlazni kod programa za obradu)
Kada bilo koji program završi svoj posao, vraća operacijskom sustavu svoj kod prekida. Uobičajeno je vraćanje nule nakon uspješnog završetka, inače kod pogreške. Ponekad, ili bolje rečeno često, program "namjerno" vraća vrijednost različitu od nule kako bi se neki detalji njegovog rada mogli "naučiti" u batch datoteci. Na primjer, program vraća kod pritisnute tipke, a .bat datoteka na temelju toga izvodi različite radnje.
Kako batch datoteka može saznati izlazni kod izvršenog programa? Varijabla ključa ERRORLEVEL je predviđena za ovu svrhu.
Primjer skupne datoteke s razinama pogreške:
@JEKA ISKLJUČENA
REM Pokrenite program prg1.exe
PRG1.EXE
REM Analiza koda završetka
AKO JE RAZINA POGREŠKE 2. IDI NA DATOTEKU NIJE PRONAĐENA
IF ERRORLEVEL 1 GOTO WRITEERROR
AKO ERRORLEVEL 0 IDITE NA EXITOK
IDI NA ONEEXIT
:DATOTEKA NIJE PRONAĐENA
ECHO Greška! Datoteka nije pronađena!
IDI NA ONEEXIT
:WRITEERROR
ECHO Greška snimanja!
IDI NA ONEEXIT
:EXITOK
ECHO Program je uspješno završen.
IDI NA ONEEXIT
:ONEIZLAZ
Imajte na umu da analiza izlaznog koda ne počinje od nule, već od najveće moguće vrijednosti. Činjenica je da takva provjera znači: “ako je razina pogreške veća ili jednaka vrijednosti, tada...”. To jest, ako provjeravamo počevši od nule, bilo koja vrijednost će biti istinita u prvom retku, što je netočno.
Ovo je najčešća greška u ovoj vrsti programa.
Varijable postavljaju okruženje Cmd.exe. Oni propisuju ne samo ponašanje naredbene ljuske, već i samog OS-a. Varijable treba podijeliti u dvije vrste, od kojih svaka ima jedinstvena svojstva: sistemske i lokalne. Prva vrsta vam omogućuje da postavite ponašanje globalnog OS okruženja tijekom rada. Lokalne varijable postavljaju aktivnost okruženja isključivo na određenu instancu Cmd.exe. Ovo treba napomenuti kao ključnu razliku.
Njegov govor o varijablama sustava je da su unaprijed instalirane u OS i da ih mogu koristiti sve aplikacije. Da biste ih mijenjali, morate imati administratorska prava pristupa. Najčešća primjena je pružanje zadatka pokretanja sustava. Kada se takav događaj provodi za konkretnog korisnika, možemo govoriti o mogućnosti korištenja lokalnih varijabli.
Ispod je popis postojećih klasa varijabli na temelju važnosti njihovog prioriteta (silaznim redoslijedom):
- Ugrađeni sustav. Moraju se nazvati najozbiljnijim, što pruža Posebna pažnja u nastajanju.
- Varijable prikaza sustava povezane s HKEY_LOCAL_MACHINE.
- Varijable lokalni tip, povezano s HKEY_CURRENT_USER.
- Cijeli popis varijabli i okolina koje se nalaze u dokumentu Autoexec.bat.
- Kompletan popis varijabli i okruženja koji se nalaze u skripti za pokretanje sustava. U određenim situacijama možda i ne postoji.
- Interaktivno primijenjene varijable za pisanu skriptu ili paketni dokument.
Postoji prilično dugačak popis varijabli koje spadaju u kategoriju lokalnih ili sistemskih. Ovom pitanju treba posvetiti više pažnje.
Lokalne varijable
Ime | Informacija |
---|---|
%ALLUSERSPROFILE% |
Pruža informacije o tome gdje se točno nalazi profil Svi korisnici |
Pruža zadanu lokaciju programa |
|
Omogućuje vam da dobijete put do mape koju koristite |
|
Pruža naredbeni redak koji se koristi za pokretanje trenutne instance Cmd.exe |
|
Pruža naziv kontrolera domene koji provjerava autentičnost navedene sesije |
|
Omogućuje vam da navedete KA parametre za trenutni tumač. Da biste dobili pristup, morate koristiti Cmd.exe |
|
Pruža naziv domene koja ima popis korisničkih računa |
|
Daje ime korisnika koji je prijavljen |
|
Vraća poziciju računa trenutnog korisnika |
Varijable sustava
Omogućuje vam da navedete broj verzije trenutnih proširenja procesora naredbi |
|
Daje naziv uređaja na kojem se rad izvodi |
|
Vraća putanju do izvršne naredbene ljuske |
|
Pruža valjane informacije. Treba napomenuti da se namjerava koristiti format sličan datumu /t. Sve informacije o navedenoj naredbi mogu se dobiti izravno iz odgovarajućeg odjeljka na web mjestu |
|
Koristi se za pružanje šifre pogreške zadnje korištene naredbe. Standardna situacija uključuje prisutnost vrijednosti koja je različita od nule |
|
Daje naziv diska radne stanice koji je povezan s korisničkim imenikom. Potrebno za instalaciju na temelju lokacije glavnog imenika |
|
Pruža put do glavnog direktorija korisnika. Treba se instalirati na temelju informacija o lokaciji glavnog imenika |
|
Pruža put do korisničkog zajedničkog glavnog imenika. Treba se instalirati na temelju informacija o lokaciji glavnog imenika |
|
%NUMBER_OF_PROCESSORS% |
Određuje broj procesora koje određeni uređaj ima |
Prenosi informacije o nazivu OS-a određeni uređaj. Postoje određene značajke prikazivanja naziva za neke vrste OS-a i to se mora uzeti u obzir |
|
Postavlja put pretraživanja za otkrivanje programa |
|
Daje popis ekstenzija dokumenata koje OS smatra izvršnim |
|
%PROCESSOR_ARCHITECTURE% |
Koristi se u slučajevima kada je potrebno dobiti arhitekturu određenog procesora |
%PROCESSOR_IDENTFIER% |
Pruža kratke informacije o procesoru |
%PROCESSOR_LEVEL% |
Pruža informacije o broju revizije procesora |
Pruža bilo koji cijeli broj u rasponu 0-32767 uključivo |
|
Daje naziv diska na kojem je snimljen korijenski direktorij sustava Windows XP |
|
Omogućuje lokaciju imenik sustava OS |
|
Ove varijable su sustav i korisnik. To vam omogućuje obavljanje identičnih zadataka s različite situacije. Pruža privremene mape koje mogu koristiti svi korisnici. Za određene programe trebate koristiti TEMP ili TMP. |
|
Pruža informacije o trenutnom vremenu. Koristi se sličan format prikaza kao vrijeme /t. |
|
Omogućuje vraćanje OS direktorija |
Postavljanje varijabli okoline
Da biste stvorili, izbrisali ili izložili varijablu okruženja, morate koristiti posebna ekipa postaviti. Posebnost je prilagodba varijabli isključivo u okruženju operativne ljuske.
Za izdavanje određene varijable, predviđeno je pisanje u CS:
postavite ime_varijable
Dodavanje druge varijable vrši se pisanjem:
postavite naziv varijable=vrijednost
Da biste izvršili postupak brisanja, trebali biste napisati red:
postavite ime_varijable=
Sustav specificira upotrebu većine postojećih simbola koji služe kao vrijednosti. Ovdje se mogu ubrojiti i prodeli. Primjeniti određene likove, prvo morate unijeti (^) ili staviti u navodnike. Neuspjeh u tome može rezultirati netočnim izvođenjem ili pogreškama. Potrebno je razmotriti nekoliko jednostavni primjeri. Recimo da trebamo kreirati varijablu new&name. Da bi se izvršio zadatak, u CS se unosi sljedeće:
postavite varname=novo^&ime
Možete pokušati ne koristiti poseban znak (^), ali to će biti nemoguće učiniti. Razlog je taj što stalno daje istu pogrešku.
Kada je varijabla postavljena, nije važno koriste li se velika ili mala slova. Slučaj neće biti uzet u obzir. Postoji jedan razlikovna značajka- varijabla će i dalje biti prikazana točno onako kako je unesena. To olakšava uočavanje ako koristite različite registre za razlikovanje pri pisanju imena.
Zamjena u varijable okoline
Postoji način da izvršite zamjenu određenih vrijednosti u varijable okoline izravno iz CS-a ili skripte. Za izvođenje ovog zadatka preporučuje se korištenje simbola postotaka. Ovako izgleda:
%variable_name%
Namjera je ukazati na činjenicu da Cmd.exe mora izravno pristupiti vrijednostima određene varijable. Postupak usporedbe znak po znak neće se provesti. Važno je uzeti u obzir činjenicu da se sama zamjena ne smatra rekurzivnom. Provjera se provodi samo jednom.
02/12/15 21.1KZašto je takav kaos u svijetu? Da, jer je administrator našeg sustava zaboravio ispuniti svoje dužnosti. Ili sam samo izgubio popis cmd naredbi iz našeg svijeta. Iako je ovo donekle originalan pogled na postojeći poredak stvari, on ipak odražava dio istine koja nam je potrebna: pomoću naredbenog retka možete lako unijeti red u svoje računalo:
Što je naredbeni redak
Naredbeni redak najjednostavniji je alat za upravljanje operativnim sustavom vašeg računala. Kontrola se odvija pomoću određenog broja rezerviranih naredbi i skupova znakova tekstualna tipkovnica bez miša ( u Windows operativnom sustavu).
U sustavima na Temeljen na UNIX-u Kada radite s naredbenim redkom, možete koristiti miš.
Neke su nam naredbe stigle iz MS-DOS-a. Naredbeni redak naziva se i konzola. Koristi se ne samo za administraciju operativnog sustava, već i za upravljanje redovni programi. Najčešće su u ovaj skup naredbi uključene naredbe koje se rijetko koriste.
Prednost cmd aplikacije osnovnih naredbi je da troši minimalnu količinu resursa sustava. A to je važno u hitnim situacijama kada su, na ovaj ili onaj način, uključene sve snage računala.
cmd implementira mogućnost izvršavanja i stvaranja cijelih skupnih datoteka, koje predstavljaju određeni redoslijed izvršavanja određenog broja naredbi (skripti). Zahvaljujući tome, mogu se koristiti za automatizaciju određenih zadataka ( upravljanje računima, arhiviranje podataka i drugo).
Tim Windows ljuska Interpretator Cmd.exe koristi se za manipulaciju i preusmjeravanje naredbi na određene uslužne programe i alate operacijskog sustava. Učitava konzolu i preusmjerava naredbe u formatu koji sustav razumije.
Rad s naredbenim redkom u operacijskom sustavu Windows
Konzolu u sustavu Windows možete pozvati na nekoliko načina:
![](https://i2.wp.com/internet-technologies.ru/wp-content/uploads/articles/201502/vizvat-konsol-150838.png)
Obje metode uključuju pokretanje konzole kao trenutni korisnik. Odnosno, sa svim pravima i ograničenjima koja su nametnuta njegovoj ulozi u operativnom sustavu. Da biste pokrenuli cmd s administratorskim pravima, trebate odabrati ikonu programa u izborniku Start i u kontekstni izbornik odaberite odgovarajuću stavku:
Nakon pokretanja uslužnog programa možete dobiti popratne informacije o naredbama i formatu za njihovo pisanje u konzoli. Da biste to učinili, unesite izjavu o pomoći i pritisnite "Enter":
Osnovne naredbe za rad s datotekama i imenicima
Najčešće korištene naredbe su:
- RENAME – preimenovanje direktorija i datoteka. Sintaksa naredbe:
PREIMENUJ | REN [pogon/staza] originalni naziv datoteke/direktorija | konačni naziv datoteke
Primjer: PREIMENUJ C:UsershomeDesktoptost.txt test.txt
- DEL (BRIŠI) – koristi se samo za brisanje datoteka, ne direktorija. Njegova sintaksa je:
DEL | BRIŠI [metoda obrade] [naziv datoteke]
Primjer: Del C:UsershomeDesktoptest.txt/P
Pod metodom obrade podrazumijevamo posebnu oznaku koja vam omogućuje implementaciju određenog uvjeta prilikom brisanja datoteke. U našem primjeru, zastavica "P" omogućuje prikaz dijaloškog okvira dopuštenja za brisanje svake datoteke:
Više informacija o mogućim vrijednostima parametra "način obrade" možete pronaći u tehničkoj dokumentaciji za operativni sustav Windows.
- MD – omogućuje stvaranje mape na navedenoj stazi. Sintaksa:
MD [pogon:] [put]
Primjer:
MD C:UsershomeDesktoptest1test2
Primjer će stvoriti podmapu test2 unutar mape test1. Ako jedna od korijenskih mapa staze ne postoji, i ona će se stvoriti:
- RD ( RMDIR) – brisanje određene mape ili svih direktorija na određenoj stazi. Sintaksa:
RD | RMDIR [ključ_procesa] [pogon/put]
Primjer:
rmdir /s C:UsershomeDesktoptest1test2
Primjer koristi oznaku s, koja će uzrokovati brisanje cijele grane direktorija navedenih u stazi. Stoga ga ne biste trebali koristiti bez potrebe naredba rmdir s ovim ključem za obradu.
U sljedećem odjeljku pobliže ćemo pogledati mrežne cmd naredbe.
Naredbe za rad s mrežom
Naredbeni redak omogućuje vam upravljanje ne samo datotečnim sustavom računala, već i njegovim mogućnosti umrežavanja. Dio mrežne naredbe Konzola uključuje velik broj operatera za nadzor i testiranje mreže. Najrelevantniji od njih su:
- ping – naredba se koristi za praćenje mogućnosti Mrežna veza PC. Poslano na udaljeno računalo postavljena količina pakete i zatim im poslati natrag. U obzir se uzima vrijeme prijenosa paketa i postotak gubitaka. Sintaksa:
ping [-t] [-a] [-n brojač] [-l veličina] [-f] [-i TTL] [-v tip] [-r brojač] [-s brojač] [(-j host_list | - k node_list)] [-w interval] [target_PC_name]
Primjer implementacije naredbe:
ping primjer.microsoft.com
ping –w 10000 192.168.239.132
U posljednjem primjeru naredbe cmd ping, zahtjev se šalje primatelju s navedenom IP adresom. Interval čekanja između paketa je 10 000 (10 sekundi). Prema zadanim postavkama ovaj je parametar postavljen na 4000:
- tracert – koristi se za određivanje mrežni put Do navedeni resurs slanjem posebne echo poruke preko protokola
- ICMP (Protokol kontrolnih poruka). Nakon pokretanja naredbe s parametrima, prikazuje se popis svih routera kroz koje poruka prolazi. Prvi element na popisu je prvi usmjerivač na strani traženog resursa.
Sintaksa tracer cmd naredbe:
tracert [-d] [-h maksimalni_broj_skokova] [-j popis_čvorova] [-w interval] [naziv_ciljnog_resursa]
Primjer implementacije:
tracert -d -h 10 microsoft.com
Primjer prati rutu do određenog resursa. Time se povećava brzina operacije zbog korištenja parametra d, koji sprječava naredbu u pokušaju dobivanja dopuštenja za čitanje IP adresa. Broj prijelaza (skokova) ograničen je na 10 korištenjem postavljena vrijednost parametar h. Prema zadanim postavkama, broj skokova je 30:
![](https://i1.wp.com/internet-technologies.ru/wp-content/uploads/articles/201502/kolichestvo-prizhkov-ravn-150840.png)
isključivanje [(-l|-s|-r|-a)] [-f] [-m [\PC_name]] [-t xx] [-c “poruke”] [-d[u][p]: xx:yy]
Primjer:
isključivanje /s /t 60 /f /l /m \191.162.1.53
Udaljeno računalo (m) s navedenom IP adresom (191.162.1.53) ugasit će se (s) nakon 60 sekundi (t). Ovo će vas prisiliti da se odjavite iz svih aplikacija (f) i sesije trenutnog korisnika (l).