Fișiere lot. Creați fișiere batch pentru a efectua anumite sarcini

Oamenii care sunt familiarizați cu termenul fișier batch știu că fișierele BAT pot simplifica semnificativ viața și economisi timp dacă știți să le scrieți și să le utilizați corect. În acest articol, voi vorbi despre cum să creați fișiere BAT și vă voi prezenta greșelile comune care apar de obicei atunci când le scrieți.

Crearea unui fișier BAT este foarte simplă. Deschideți Notepad și salvați o foaie goală cu extensia .bat, selectând opțiunea Salvare ca... și scrieți în câmpul Nume fișier ceva care se termină în .bat, de exemplu test.bat.
Specificați tipul de fișier ca în captura de ecran de mai jos - Toate fișierele. Salvați și primiți un fișier BAT.

Puteți edita fișierul BAT în Notepad sau în orice alt editor de text axat pe lucrul cu codul.

Acum să trecem direct la informații practice. Mulți oameni de pe Internet caută un răspuns la întrebarea: Cum să faceți față spațiilor din fișierele BAT? . În căile către foldere și fișiere executabile, prezența unui spațiu provoacă o eroare. Cel mai obișnuit răspuns este: Închideți calea între ghilimele. Și acest răspuns nu este corect. Adevărat, unii vor spuma la gură și susțin că funcționează. Așadar, au apărut două motive - de ce nu este adevărat și de ce unele vor fi.

Pe Windows (precum și pe UNIX), programele instalate pe sistem sunt înregistrate corespunzător de către sistem. Prin urmare, unele dintre programele instalate pot fi lansate cu o singură comandă dintr-un fișier BAT sau din aplicația Run din panoul Start. Un astfel de program este Firefox:

porniți Firefox

Dacă după această comandă scrieți calea către fișierul executabil, atunci se întâmplă următoarele: browserul Firefox pornește și încearcă să proceseze cererea, adică fișierul a cărui cale este specificată. Adică, dacă specificați următoarele:

porniți firefox C:\Program Files\Mozilla Firefox\firefox.exe

Browserul se va deschide, indiferent de ce scrie după pornirea Firefox. De aceea unii tovarăși se vor asigura că totul funcționează grozav. Cu toate acestea, dacă luați un program portabil, situația va fi complet diferită. Să luăm ca exemplu clientul ftp Filezilla. Deoarece sistemul nu știe despre program, linia de mai sus

porniți filezilla

nu va funcționa. Pentru a rula un program necunoscut de sistem, trebuie să specificați calea către acesta:

porniți D:\FileZilla\FileZilla.exe

Nume lungi în fișierele bat

Acum să vorbim despre poteci și spații. Prima modalitate de a evita această problemă este să folosiți un nume scurt.

porniți C:\Program Files\Sound Club\scw.exe

În exemplu există două nume cu spații. Să le înlocuim cu altele scurte. Regulile pentru crearea numelor scurte sunt următoarele: numele scurt folosește primele șase caractere ale numelui, excluzând spațiile, după nume se indică numărul de serie al folderului folosind simbolul ~ . Deoarece fișierele mele de program și folderele Sound Club sunt singulare, va arăta astfel:

Fișiere de program - Progra~1 Sound Club - SoundC~1 start C:\Progra~1 \SoundC~1 \scw.exe

Dacă există două foldere în apropiere, de exemplu Sound Club și Sound Clown, atunci urmând regulile, în exemplul de mai sus va trebui să specificați SoundC~2, deoarece în acest caz Sound Club va fi al doilea nume (numele sunt numărate în ordine alfabetică Ordin).

Dar această metodă este incomod deoarece trebuie să indicați numerele de serie. Situația cu fișierele Program este mai mult sau mai puțin normală. Puțini oameni vor găsi două foldere similare pe unitatea de sistem. Dar dacă decideți să instalați mai multe produse Mozilla pe computer. Veți ajunge cu mai multe foldere, de exemplu:

Mozilla Firefox Mozilla Thunderbird Mozilla Sunbird

Nume scurte pentru ei vor fi

Mozill~1 Mozill~2 Mozill~3

Acum imaginați-vă că ați scris un fișier BAT menționând aceste programe. Dacă dezinstalați Firefox, intrările rămase nu vor mai funcționa, iar dacă dezinstalați Thunderbird, intrarea pentru Sunbird nu va mai funcționa. Pe scurt, metoda cu nume scurte nu este calea noastră.

Spații și ghilimele în fișierele bat

Citatele funcționează de fapt, dar nu în modurile care sunt de obicei recomandate. De obicei, se recomandă următoarele:

porniți „C:\Program Files\Sound Club\scw.exe”

Deci comanda nu va funcționa, deoarece dacă vă uitați la ajutorul pentru aceasta (start /? ), atunci în ajutor veți vedea următoarele:

START ["header"] [comandă/program] [parametri]

După cum puteți vedea, primul parametru este titlul ferestrei și este între ghilimele. Acest parametru este opțional, dar este totuși recomandat să-l specificați () pentru a evita erorile la executarea comenzii. Nu trebuie să scrieți nimic în ghilimele. Se va dovedi astfel:

porniți "" "C:\Program Files\Sound Club\scw.exe"

Opțiunea de a include toate numele cu spații separat între ghilimele va funcționa, de asemenea:

porniți C:\"Fișiere de program"\"Sound Club"\scw.exe

Cu toate acestea, în unele cazuri, niciunul dintre cele de mai sus nu funcționează. În astfel de cazuri, pot recomanda utilizarea comenzii cd. Accesați partiția de sistem, apoi utilizați cd în folderul Fișiere de program și rulați programul (porniți):

%SystemDrive% cd \Program Files\Sound Club\ porniți scw.exe

Cred că această metodă va funcționa peste tot. Acum câteva puncte importante. Să presupunem că ați creat un fișier batch care lansează trei programe și trebuie să excludeți temporar lansarea unuia dintre cele trei. Acest lucru se poate face ștergând linia sau comentând-o. Prima metodă este vandalică, iar a doua, vezi mai jos.

start firefox start jetaudio rem start defraggler

În acest caz, lansarea programului Defraggler.exe instalat pe sistem este dezactivată. Comentați linii prin specificarea comenzii rem la începutul liniei. Toate fișierele BAT sunt executate într-o fereastră de consolă. Pentru a o face să dispară când comenzile sunt finalizate, nu uitați să scrieți comanda de ieșire la sfârșit.

porniți firefox porniți jetaudio rem start defragler ieșire

Lansarea aplicațiilor dintr-un fișier bat

În prima parte a articolului, am vorbit în termeni generali despre fișierele BAT. Acum a devenit clar ce este și cu ce se mănâncă. În a doua parte vom vorbi despre lucruri mai specifice. De exemplu, cum să folosiți un fișier BAT pentru a lansa mai multe aplicații cu anumite setări sau să instalați un program automat pentru a nu pierde timpul cu răspunsuri de genul Sunteți de acord cu termenii acordului de licență? și nu apăsați butoanele inutile.

Mai sus au fost prezentate mai multe moduri de a lansa aplicații folosind un fișier BAT. Prima este o comandă scurtă pentru a lansa programul instalat pe sistem.

porniți Firefox

Acest lucru nu funcționează întotdeauna. Prin urmare, această tehnică poate fi aplicată pe deplin unui sistem specific, dar nu este potrivită ca soluție universală. Dacă scopul tău este să faci fișierul BAT să funcționeze oriunde și întotdeauna, trebuie să folosești căi complete:

porniți C:\"Fișiere de program"\"Mozilla Firefox"\firefox.exe

De asemenea, am observat că fișierul BAT trebuie să conțină o comandă pentru a finaliza:

porniți C:\"Fișiere de program"\"Mozilla Firefox"\firefox.exe ieșire

Rularea programelor în fișiere bat cu parametri (chei)

Puteți nu numai să rulați programul, ci și să îi oferiți comenzi suplimentare atunci când îl porniți. De exemplu, comanda pentru a rula minimizată:

start /min D:\FileZilla\FileZilla.exe ieșire

A comanda în acest caz înseamnă a indica cheia. Tasta este indicată cu o bară oblică după comanda principală (comandă / tastă). Comanda principală în acest caz este pornirea. Adevărat, tasta min funcționează doar în jumătate din cazuri, deoarece se referă în mod specific la comanda de pornire și nu la programele pe care le lansează această comandă.

În general, există o mulțime de taste și seturile de taste pentru diferite programe pot varia semnificativ. Există, totuși, câteva comune. De exemplu, tasta de ajutor (/? sau /help). Pentru a vedea cum funcționează această cheie, să ne uităm la un exemplu practic. Deschideți consola (faceți clic + R , introduceți cmd , apoi Enter ) și introduceți următoarele în consolă:

start /?

Consola va afișa o listă de taste valide cu comentarii pentru comanda de pornire.

Acordați atenție comutatorului /wait. În unele cazuri, este pur și simplu de neînlocuit. De exemplu, ați decis să utilizați un fișier BAT pentru a despacheta arhiva cu programul și a rula chiar acest program. Fișierul batch va conține două comenzi - pentru despachetare și pentru lansare. Deoarece comenzile vor fi executate aproape simultan la rularea fișierului BAT, arhiva nu va avea timp să despacheteze și nu va mai fi nimic de rulat. Prin urmare, va exista o eroare. În acest caz, cheia va veni în ajutor /aștepta:

Astfel, sistemul va efectua mai întâi prima acțiune, va aștepta finalizarea acesteia și abia apoi va trece la a doua. Dacă trebuie să așteptați o anumită perioadă de timp, este mai ușor să utilizați un utilitar de consolă. În locul potrivit în fișierul BAT, scrieți următoarea comandă (numărul este numărul de secunde):

porniți Sleep.exe 15

Puteți face multe cu cheile. Este posibil să instalați aplicații. Pentru a face acest lucru, sunt utilizate mai multe chei în funcție de tipul de instalare utilizat pentru a instala programul pe computer:

/S /s /q /silent și o serie de altele

În unele cazuri, poate fi foarte convenabil. Avast antivirus are o opțiune de instalare silențioasă în versiunea corporativă. Se presupune că versiunea gratuită (acasă) nu are o instalare silentioasă. Cu toate acestea, dacă știți cum funcționează programul de instalare InstallShield, veți înțelege că acesta este un canard, deoarece acest program de instalare însuși acceptă comutatorul de instalare silențioasă /S. Aceasta înseamnă că toate produsele realizate pe baza sa fac același lucru. Și Avast nu face excepție. Doar creați un fișier cu conținutul din folderul cu Avast's BAT

porniți avast.exe /S exit

îl lansați și programul este instalat pe computerul dvs. practic fără nicio intervenție din partea dvs. În acest fel, puteți scrie o listă întreagă de programe pentru instalare silențioasă și puteți economisi timp, de exemplu, la reinstalarea sistemului. În articol puteți obține informații mai detaliate despre chei.

Există și alte opțiuni pentru gestionarea programelor folosind fișiere BAT. Puteți porni un program spunându-i să deschidă un fișier la pornire. Folosesc această metodă când dezvolt site-uri web. Este foarte convenabil atunci când întregul set de instrumente deschide documentele și folderele necesare cu un singur clic:

conexiune rem la serverul ftp start /min D:\FileZilla\FileZilla.exe „ftp://login:parola@server” rem deschiderea index.php în Firefox porniți C:\"fișiere de program"\"mozilla firefox"\firefox.exe "http://localhost/site_folder/index.php" rem deschide start.html într-un editor de text start /min C:\"Fișiere de program"\text_editor.exe "E:\server\site_folder\index.html" rem deschiderea folderului cu fișierele site-ului start /min E:\server\site_folder ieșire din consola rem Ieșire

Observ că toate tehnicile descrise mai sus pot fi folosite în diverse combinații și combinații.

start /min /wait program.exe /m /S start C:\Directory\program2.exe "C:\Files\file.odt" ieșire

Dar este important de reținut: tot ce ține de execuția programului lansat în fișierul batch este scris cu acesta pe aceeași linie.

porniți C:\"fișiere de program"\"mozilla firefox"\firefox.exe "http://localhost/site_folder/index.php"

Ca epilog, voi oferi spre revizuire convertizorul fișierelor BAT în aplicații în format .exe - . Un fișier BAT nu este întotdeauna plăcut din punct de vedere estetic, dar cu ajutorul unui convertor puteți împacheta un fișier batch într-un fișier exe, decorându-l cu orice pictogramă la alegere.

Am dat peste un alt convertor BAT în EXE, îl puteți considera ca o alternativă la programul anterior: Advanced Bat To Exe Converter

Acum este timpul să luați în considerare comenzi de lilieci. Practic, comenzile introduse în cmd sunt folosite aici, dar există și unele care nu au sens să le utilizeze pe linia de comandă.

Cum să obțineți o listă completă de comenzi pentru lilieci

Pentru a descrie toate comenzile, va trebui să scrieți o serie întreagă de articole, pentru a nu vă suprasolicita, ne vom limita la un articol și ne vom considera informații compacte. După cum știți, fișierul bat și comenzile cmd sunt aceleași pentru a obține o listă a acestora sau . Introduceți comanda de ajutor, care în engleză este scrisă ca ajutor, apăsați Enter. Ca rezultat, computerul va scrie toate comenzile cu o scurtă descriere în interfața cmd.

După ce ați revizuit această listă, veți dori să aflați mai detaliat ce este o anumită comandă de liliac. De exemplu, să selectăm comanda for, pentru a o descrie vom introduce ajutor pentru sau pentru /? și faceți clic pe enter. Ca urmare, veți primi ajutor online pentru comandă; este voluminoasă, așa că va trebui să apăsați orice tastă de mai multe ori pentru a citi descrierea ulterioară. În acest fel, puteți învăța sintaxa unei anumite comenzi.

comenzi pentru fișierele bat

Acum să facem cunoștință cu comenzile folosite în fișierul batch, cu o scurtă descriere. Nu sunt sensibile la majuscule, cu toate acestea, le-am enumerat cu majuscule pentru a ajuta la identificare.

@ Toate comenzile executate de bat sunt afișate pe ecran, pentru a elimina lucrurile inutile, un „câine” este plasat în fața comenzii. Folosit adesea cu @echo dezactivat.
a stabilitSetează variabile. De exemplu, setper=c:\windows aici per atribuie calea. Puteți scrie o valoare greoaie într-o variabilă și să o specificați în script, ceea ce face codul mai compact. Dacă conținutul său se modifică, atunci nu va trebui să modificați valorile peste tot unde este furnizată această variabilă.
:: Una dintre cele două metode de a comenta într-un fișier bat fără a afișa această linie pe ecran.
:ETICHETACând adăugați două puncte la un cuvânt, este creată o etichetă care vă permite să săriți la diferite secțiuni ale fișierului de corp. O etichetă poate avea un nume diferit, LABEL este un exemplu.
APELBat este o comandă care apelează un fișier batch în altul. Toți parametrii descriși într-unul dintre fișiere pot fi transferați unul altuia.
ALEGERESelectați comanda.
CLSȘterge conținutul shell-ului care este afișat deasupra CLS.
ECOUAfișează un mesaj pe ecran. De exemplu, „ECHO Bună ziua!” va afișa „Bună ziua!” Dacă nu utilizați @ECHO off la începutul fișierului batch, atunci veți vedea calea către fișierul bat și două mesaje, ceea ce nu este necesar. Puteți crea o linie goală tastând ECHO. cu un punct la sfârșit.
IEȘIREÎncheie scriptul de lot curent.
GOTO LABELFolosit pentru a sări la o anumită etichetă, în acest caz LABEL, și pentru a executa scriptul după aceasta.
DACĂCa și în limbajele de programare bat, comanda if reprezintă îndeplinirea unei condiții, în funcție de care scriptul va merge pe o cale sau alta. Vă rugăm să consultați ajutorul pentru sintaxă.
pentruO buclă folosită pentru a organiza execuția acelorași acțiuni.
PAUZĂDacă trebuie să vedeți rezultatul unui script și acesta rulează și fereastra se închide rapid, atunci utilizați PAUSE. Vă va permite să vizualizați rezultatul și să finalizați scriptul apăsând orice buton.
R.E.M.A doua modalitate de a comenta. Spre deosebire de:: este imprimat pe ecran dacă nu există nicio construcție @ECHO off.
SCHIMBSchimbă poziția parametrilor batch în fișierul bat.
STARTLansează programe, ferestre etc. Are multe atribute (vezi ajutor).

Aceasta este baza comenzilor de lilieci. Sintaxa unor elemente este dificilă pentru începători și necesită anumite cunoștințe. Toate comenzi pentru fișierele bat, descrise mai sus, sunt considerate superficial, pentru a le afla scopul, iar sintaxa completă o veți găsi în Windows Help.

Utilizarea unei interfețe grafice în sistemele de operare astăzi pare a fi ceva de la sine înțeles și complet natural, dar nu a fost întotdeauna cazul. Primul sistem de operare, MS DOS, dezvoltat de Microsoft, nu avea GUI și era controlat prin introducerea de comenzi text. Au trecut aproape 40 de ani de atunci, dar limbajul de scriptare în linia de comandă este încă popular și nu numai în rândul dezvoltatorilor.

Linia de comandă nu este atât de convenabilă, dar cu ajutorul ei puteți efectua operațiuni care nu sunt posibile din GUI. Pe de altă parte, lansarea consolei de fiecare dată, introducerea comenzilor în ea una după alta - toate acestea încetinesc foarte mult munca. Cu toate acestea, puteți simplifica semnificativ sarcina creând un fișier bat sau pur și simplu un fișier batch - un fișier text cu extensia BAT care conține o listă de instrucțiuni procesate de interpretul de comandă CMD. Astfel de fișiere sunt folosite pentru a automatiza diverse sarcini, de exemplu, pentru a șterge fișiere temporare într-un program sau pentru a lansa programe.

Cum se creează un fișier cu extensia BAT

Deci, cum se creează un fișier bat în Windows 7/10? Foarte simplu. Pentru a face acest lucru, veți avea nevoie de orice editor de text și cunoștințe despre elementele de bază ale liniei de comandă. Puteți folosi Notepad, sau și mai bine, Notepad++, deoarece acesta din urmă are evidențierea sintaxelor. Creați un fișier nou în editor, selectați „Salvare ca” din meniul „Fișier”, dați un nume viitorului script și selectați „Fișier lot (*bat; *cmd; *nt)” în meniul „Tip de fișier” -lista jos.

Dacă doriți să utilizați Notepad pentru a crea un fișier bat, trebuie să atribuiți manual extensia și să selectați „Toate fișierele” din lista „Tip de fișier”.

După cum puteți vedea, crearea unui fișier cu extensia bat nu este dificilă; cu toate acestea, există câteva subtilități aici. Întreruperile de linie nu pot fi folosite în fișierele de comandă; codificarea fișierului bat trebuie setată la UTF-8; dacă corpul scriptului folosește chirilic, codificarea trebuie schimbată inserând comanda chcp 1251 în locul potrivit.

În loc de extensia BAT, puteți folosi CMD, rezultatul executării scriptului va fi exact același.

Comenzi de bază, sintaxă și exemple de utilizare a fișierelor batch

Știi cum să faci un fișier bat, acum este timpul pentru partea cea mai interesantă, și anume sintaxa limbajului de interpret CMD. Este clar că un fișier batch gol nu va funcționa, nici măcar nu se va lansa când dai dublu clic pe el. Pentru ca scriptul să funcționeze, cel puțin o comandă trebuie să fie scrisă în el. Pentru un exemplu vizual, să vedem cum să scrieți un fișier bat pentru a lansa programe. Să presupunem că atunci când începi să lucrezi, lansezi trei programe de fiecare dată - Chrome, Firefox și VLC. Să simplificăm sarcina prin crearea unui script care va lansa aceste programe în sine la intervale de cinci secunde.

Deschideți un fișier batch gol și inserați următoarele comenzi în el:

Porniți "" "C:/Program Files/Google/Chrome/Application/chrome.exe" timeout /t 05 start "" "C:/Program Files/Mozilla Firefox/firefox.exe" timeout /t 05 start "" "C :/Fișiere de program/VideoLAN/VLC/vlc.exe”

Echipă start lansează fișierul executabil al programului dorit și comanda timeout/t stabilește intervalul dintre porniri. Atenție la plasarea ghilimelelor - acestea conțin căi care conțin spații. De asemenea, dacă există caractere chirilice în cale, ar trebui să inserați o comandă care modifică codificarea la începutul scriptului chcp 1251, altfel interpretul nu va putea citi corect calea.

Când rulați scriptul, patru ferestre de consolă vor fi deschise secvențial; acest lucru este normal; după executarea comenzilor, toate se vor închide automat, totuși, vă puteți asigura că se deschide doar prima fereastră. Pentru a face acest lucru, codul de lansare a aplicației ar trebui modificat după cum urmează:

Start /b "" "cale"

De asemenea, se poate întâmpla ca la un moment dat să fie necesară întreruperea execuției scriptului, astfel încât utilizatorul să poată decide dacă execută sau nu toate celelalte comenzi. Există o comandă pentru asta pauză. Încercați să înlocuiți timeout cu el și vedeți ce se întâmplă.

Start /b "" "cale" pauză

Să ne uităm la un alt exemplu de comenzi pentru un fișier bat. Să scriem un script care va opri computerul într-un caz și îl va reporni în altul. În aceste scopuri vom folosi comanda închide cu parametrii /s, /rȘi /t. Dacă doriți, puteți adăuga o solicitare de a efectua o acțiune în fișierul dvs. corporal, astfel:

@echo off chcp 1251 echo "Sunteți sigur că doriți să opriți computerul?" întrerupeți oprirea /s /t 0

Să explicăm. Prima comandă ascunde textul comenzilor în sine, a doua - setează codarea chirilică, a treia - afișează un mesaj pentru utilizator, a patra - setează o pauză, a cincea - se oprește și cu tasta /rîn loc de /s repornește computerul fără întârzierea tradițională de un minut. Dacă nu doriți să participați la ceremonie cu cereri și pauze, puteți lăsa doar a cincea comandă.

Dacă în loc de text rusesc când executați comanda vedeți kryakozyabra, încercați să convertiți fișierul script în ANSI.

Ce altceva poți face cu scripturile? O mulțime de lucruri, de exemplu, ștergerea, copierea sau mutarea fișierelor. Să presupunem că aveți un anumit folder de date în rădăcina unității D, al cărui conținut trebuie șters dintr-o singură lovitură. Deschideți fișierul batch și inserați următoarea comandă în el:

Del /A /F /Q "D:/data"

Sau poți face asta:

Forfiles /p "D:/data" /s /m *.* /c "cmd /c Del @path"

Spre deosebire de prima, a doua comandă șterge fișierele în mod recursiv, adică toate fișierele din folderul de date vor fi șterse plus cele aflate în subdirectoare.

Iată un alt exemplu util. Să scriem un script care va crea o copie de rezervă a conținutului unui folder și va salva datele în altul. Comanda este responsabilă pentru copiere robocopie:

Robocopy C:/data D:/backup /e pauză

Prin rularea unui astfel de fișier batch pentru execuție, veți copia întregul conținut al folderului de date în folderul de rezervă, inclusiv subdirectoarele, goale și cu fișiere. Apropo, comanda robocopy are mulți parametri care vă permit să configurați parametrii de copiere foarte flexibil.

Rulați fișierele bat ca administrator și într-un program, lansare ascunsă a liliecilor

Acum știți cum să creați fișiere batch și aveți o înțelegere generală a limbajului de interpret CMD. Acestea au fost elementele de bază, acum este timpul să vă familiarizați cu câteva caracteristici utile de lucru cu fișierele bat. Se știe că programele necesită drepturi de administrator pentru a efectua unele acțiuni. Batnikii ar putea avea nevoie și de ele. Cel mai evident mod de a rula un script ca administrator este să faceți clic dreapta pe el și să selectați opțiunea corespunzătoare din meniul contextual.

În plus, vă puteți asigura că un anumit fișier batch va fi întotdeauna lansat cu privilegii ridicate. Pentru a face acest lucru, trebuie să creați o comandă rapidă obișnuită către un astfel de script, să deschideți proprietățile acestuia, să faceți clic pe butonul „Avansat” și să bifați caseta de selectare „Run ca administrator” în fereastra care se deschide. Această metodă este, de asemenea, bună, deoarece vă permite să selectați orice pictogramă pentru scurtătură, în timp ce un fișier cu o extensie BAT sau CMD va avea întotdeauna un aspect nedescriptiv.

Scripturile, ca toate aplicațiile, pot fi lansate într-un program. Echipă timeout/t nu este pe deplin adecvat aici; pentru lansarea întârziată, cel mai bine este să utilizați Windows Task Scheduler încorporat. Totul este simplu aici. Deschide cu comanda taskschd.msc Scheduler, decideți asupra declanșatorului, selectați acțiunea „Run program” și specificați calea către fișierul bat. Asta e tot, scriptul va fi lansat la ora programată.

Și în sfârșit, încă un punct interesant. Când rulați un fișier bat, pe ecran apare o fereastră de linie de comandă, chiar dacă doar pentru o fracțiune de secundă. Este posibil ca scriptul să ruleze în modul ascuns? Este posibil și în mai multe moduri. Cel mai simplu este după cum urmează. Creați o comandă rapidă pentru fișierul bat, deschideți proprietățile acestuia și selectați „Restrâns la pictogramă” din meniul „Fereastră”. După aceasta, singurul semn vizibil al rulării scriptului va fi apariția pictogramei CMD pe bara de activități, dar nu se va deschide nicio fereastră.

Dacă doriți să ascundeți complet execuția scriptului, puteți utiliza o „cârjă” - scriptul VBS, care va lansa fișierul batch în modul ascuns. Textul scriptului este mai jos, salvați-l într-un fișier ascuns.vbs, după ce a înlocuit anterior calea din a doua linie de cod D:/script.bat calea către fișierul tău corporal.

Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "D:\script.bat" & Chr(34), 0 Set WshShell = Nimic

Există și alte opțiuni, de exemplu, utilizarea utilitarului Început ascuns, care vă permite să rulați fișiere executabile și batch în modul ascuns, inclusiv fără invitație.

Și asta e tot deocamdată. Informații privind crearea scripturilor BAT pot fi găsite cu ușurință pe Internet. De asemenea, este o idee bună să consultați tutorialul pentru linia de comandă Microsoft Windows al lui William Stanek. În ciuda faptului că au trecut mai bine de zece ani de la publicarea cărții, informațiile conținute în ea sunt încă relevante.

În acest articol:

  • Definirea variabilelor
  • Variabile de linie de comandă (parametri de apel pentru fișierul bat)
  • IF Operator Condițional
  • Funcții
  • Utilizarea valorilor de returnare (codul de ieșire de procesare)

Definirea variabilelor

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

Declarația SET este o extensie a capacității sistemului de operare de a manipula parametrii. Specifică o variabilă a cărei valoare este înlocuită cu numele ei ori de câte ori acel nume este folosit între semnele procentuale. Deci, dacă este dat (o variabilă pe care o necesită multe jocuri care folosesc placa de sunet a unui computer):

SET BLASTER=A220 I5 D1 P330

atunci când utilizați următoarea construcție într-un fișier batch:

ECHO %BLASTER%

„A220 I5 D1 P330” va fi afișat pe ecran. Variabilele definite folosind instrucțiunea SET sunt numite variabile de mediu și sunt vizibile după execuție până când DOS este repornit (cu excepția cazului în care sunt modificate manual în memorie). Adică, poate fi folosit dintr-un fișier batch sau program după ce a fost specificat în altul. Cea mai cunoscută este variabila PATH, care este un set de căi pentru căutarea rapidă a fișierelor. Este setat în fișierul autoexec.bat.

Variabile de linie de comandă
(parametri pentru apelarea fișierului bat)

%<цифра 0-9>

Ca în orice limbă, în limba fișierului batch este posibilă utilizarea variabilelor primite ca parametri ai fișierului bat.

Pot exista un total de 10 variabile independente existente simultan. Acesta este destul de mic pentru a scrie programe complexe, deși 3-4 este adesea suficient pentru munca obișnuită. Valoarea variabilei este egală cu valoarea parametrului corespunzător din linia de comandă. Variabila %0 va conține numele fișierului .bat și, dacă l-ați specificat, calea către acesta. Adică, dacă ați rulat fișierul abc.bat cu următorii parametri:

abc.bat a bc def

atunci variabila %0 va conține valoarea abc.bat , %1 va conține valoarea a , %2 va conține bc și %3 va conține def . Această proprietate este utilizată pe scară largă pentru a crea fișiere batch versatile atunci când aveți de-a face cu operațiuni repetitive.

Pentru a obține mai mult de 10 variabile din linia de comandă, puteți utiliza comanda SHIFT.

Comanda SHIFT vă permite să utilizați mai mult de 10 parametri de linie de comandă, însă, parametrii anteriori corespunzători se pierd. Cu alte cuvinte, comanda SHIFT mută toate valorile variabilelor cu un pas spre stânga. Adică, variabila %0 va conține valoarea conținută anterior în variabila %1, iar variabila %1 va conține valoarea variabilei %2 înainte de schimbare. Cu toate acestea, această operațiune este ireversibilă, adică este imposibil să mutați variabilele înapoi.

IF Operator Condițional

Din fericire, interpretul de comandă cmd.exe al Windows 2000 modern și mai târziu acceptă blocuri de comandă în constructele de ramificare, eliminând nevoia de FI cu etichete. Blocurile de comandă sunt incluse în paranteze. Arată astfel (imitând stilul de indentare C/C++):

condiția dacă (

Rem Comenzile din ramura „atunci”.

Rem...

) altfel (

Comenzi Rem ale ramurii „altfel”.

Rem...

Exemplu specific de utilizare:

@echo dezactivat

setați BUILDMODE=%1

dacă "%BUILDMODE%" == "" (

Echo FAIL: este necesar un argument ^(--debug, --release^)

Ieșire /b 1

rem Eliminați toate cratimele din argument pentru a simplifica procesarea

setați BUILDMODE=%BUILDMODE:-=%

dacă "%BUILDMODE%" == "depanare" (

Setați CCFLAGS=/Od /MDd /Z7

) altfel (

Setați CCFLAGS=/O2 /MD

După părerea mea, este foarte posibil să trăiești cu asta. Dar, ca întotdeauna, viața nu este atât de simplă pe cât pare. Există o problemă. Variabilele utilizate în blocurile then și else sunt extinse înainte ca blocurile să înceapă execuția, nu în timpul execuției. În exemplul de mai sus, aceasta nu provoacă probleme, dar în cele ce urmează va:

dacă "%BUILDMODE%" == "depanare" (

Echo INFO: Setarea modului de mediu de depanare

Setați OPTFLAGS=/Od

Setați CCFLAGS=%OPTFLAGS% /MDd /Z7

) altfel (

Echo INFO: Setarea modului de eliberare a mediului

Setați OPTFLAGS=/O2

Setați CCFLAGS=%OPTFLAGS% /MD

Problema este că în ambele blocuri, înlocuirea variabilei OPTFLAGS va avea loc înainte ca aceasta să fie schimbată în timpul execuției acelui bloc. În consecință, CCFLAGS va fi completat cu valoarea pe care o avea OPTFLAGS la momentul execuției acestui bloc dacă a început.

Această problemă este rezolvată prin utilizarea expansiunii variabile întârziate. Variabilele conținute în !…! în loc de %...% , semnificațiile lor vor fi dezvăluite doar în momentul utilizării directe. Acest mod este dezactivat implicit. Îl puteți activa fie utilizând comutatorul /V:ON când apelați cmd.exe, fie utilizând comanda:

în textul fișierului bat în sine. A doua metodă mi se pare mai convenabilă - nu este foarte bine să ceri cuiva să ruleze scriptul cu un anumit parametru.

Acestea fiind spuse, exemplul anterior „greșit” ar putea fi corectat astfel:

setlocal enabledelayedexpansion

dacă "%BUILDMODE%" == "depanare" (

Echo INFO: Configurarea mediului în modul de depanare

Setați OPTFLAGS=/Od

Setați CCFLAGS=!OPTFLAGS! /MDd /Z7

) altfel (

Echo INFO: Configurarea modului de eliberare a mediului

Setați OPTFLAGS=/O2

Setați CCFLAGS=!OPTFLAGS! /MD

Acum, acesta este aproape un bloc cu drepturi depline, dacă-atunci-altfel. Aproape, pentru că dacă într-una dintre comenzile echo întâlniți o paranteză de închidere, atunci trebuie să o scăpați cu caracterul ^, altfel parserul se va încurca...

Dar, în orice caz, acest lucru este mult mai bun decât numărul nebun de etichete și tranziții.

Funcții

Este posibil să creați o funcție într-un fișier bat? Da, poti. Mai mult, uneori chiar este necesar. Adevărat, acestea pot fi numite funcții condiționat.

Există o sintaxă specială pentru comanda de apel, care vă permite să mergeți la un marcaj din același fișier bat, amintindu-vă locul de unde a fost efectuat acest apel:

call:label argumente

Funcția este returnată cu comanda:

ieșire /b [cod de returnare opțional]

Tasta /b este foarte importantă aici: fără ea, veți ieși nu din funcție, ci din script în general.

Pentru detalii, tastați în linia de comandă:

apel/?

Ieșire /?

Interesant este că comanda de apel cu această sintaxă acceptă apeluri recursive cu crearea automată a unui nou cadru pentru argumentele variabile %0-%9. Uneori, acest lucru poate fi util. Iată un exemplu clasic de calcul factorial recursiv în limbajul de comandă:

@echo dezactivat

apel:factorial %1

ecou %RESULT%

Ieșire

rem Funcția de calcul al valorii factoriale

Autentificare rem:

rem %1 Numărul pentru care doriți să calculați factorialul

Ieșire rem:

rem %RESULT% Valoare factorială

:factorial

dacă %1 == 0 (

Setați RESULT=1

Ieșire /b

dacă %1 == 1 (

Setați RESULT=1

Ieșire /b

setați /a PARAM=%1 - 1

apel:factorial %PARAM%

setați /a REZULTAT=%1 * %RESULT%

ieșire /b

Exemplu de lucru:

> factorial.bat 10

3628800

Utilizarea valorilor returnate
(procesează codul de ieșire al programului)

Când orice program își finalizează activitatea, acesta returnează codul său de terminare sistemului de operare. Este obișnuit să returnați zero după finalizarea cu succes, altfel un cod de eroare. Uneori, sau mai degrabă des, un program returnează „în mod deliberat” o valoare diferită de zero, astfel încât unele detalii ale funcționării sale să poată fi „învățate” în fișierul batch. De exemplu, programul returnează codul tastei apăsate, iar fișierul .bat efectuează diverse acțiuni pe baza acestuia.

Cum poate un fișier batch să afle codul de ieșire al programului executat? Variabila cheie ERRORLEVEL este furnizată în acest scop.

Exemplu de fișier batch cu niveluri de eroare:

@ECHO OPRIT

REM Rulați programul prg1.exe

PRG1.EXE

Analiza codului de completare REM

DACĂ NIVEL DE EROARE 2 GOTO FILENOTFOUND

DACĂ EROARELELEVEL 1 GOTO WRITEERROR

DACĂ NIVEL EROARE 0 GOTO EXITOK

GOTO ONEXIT

:FIȘIERUL NU A FOST GĂSIT

Eroare ECHO! Fișierul nu a fost găsit!

GOTO ONEXIT

:WRITEERROR

Eroare de înregistrare ECHO!

GOTO ONEXIT

:EXITOK

ECHO Programul a fost finalizat cu succes.

GOTO ONEXIT

:ONEXIT

Vă rugăm să rețineți că analiza codului de ieșire nu începe de la zero, ci de la valoarea maximă posibilă. Cert este că o astfel de verificare înseamnă: „dacă errorlevel este mai mare sau egal cu valoarea, atunci...”. Adică, dacă verificăm începând de la zero, orice valoare va fi adevărată pe prima linie, ceea ce este incorect.

Aceasta este cea mai frecventă eroare în acest tip de programe.

Sau cmd.exe) îl citește linie cu linie și execută comenzile secvenţial. Un fișier batch este un analog al fișierelor script din linia de comandă (script shell) în sistemele de operare asemănătoare Unix.

Interpretul de comenzi în MS-DOS (și ulterior în familia Windows 9x) se numește COMMAND.COM. Cel mai cunoscut fișier batch de pe aceste sisteme este AUTOEXEC.BAT, care este executat automat de COMMAND.COM când sistemul de operare pornește.

Există, de asemenea, compilatoare de fișiere batch (de exemplu, Bat To Exe Converter) care convertesc fișierele batch în programe executabile independente.

Aplicație

Fișierele batch sunt utile pentru lansarea automată a aplicațiilor. Domeniul principal de aplicație este automatizarea celor mai rutine operațiuni pe care un utilizator de computer trebuie să le efectueze în mod regulat: de exemplu, copierea, mutarea, redenumirea, ștergerea fișierelor; lucrul cu foldere; arhivare; crearea de copii de siguranță a bazei de date etc.

Mulți viruși sunt scrisi ca fișier batch și există chiar generatori de viruși care sunt fișiere batch.

Fișierele batch acceptă operatori , goto și for (în sistemele din familia Windows NT capacitățile sale sunt extinse semnificativ), ceea ce vă permite să procesați rezultatele executării comenzilor sau aplicațiilor anterioare și, în funcție de aceasta, să executați în continuare acest sau acel bloc de comenzi (de obicei, dacă aplicația se finalizează cu succes, returnează 0 în variabila errorlevel; dacă nu reușește, 1 sau mai mare).

Fișierele batch pot conține atât comenzi interne procesate direct de COMMAND.COM sau CMD.EXE, cât și apeluri la utilitare externe care există ca programe separate (fișiere .EXE sau orice alte module executabile).

Exemplu

Exemplu de fișier batch care evaluează expresii:

@ echo off :begin Cls Titlu Calculator Culoare 71 Eco Introduceți ecuația: Set / P exp = Set / A result=% exp% Titlu Calculat Eco Ecuația dvs.: %exp% Eco Soluție: %rezultat% Pauză> nul mergeți la început

  1. Dezactivați ecou (afișarea liniilor de execuție pe ecran).
  2. O etichetă care creează un program ciclic.
  3. Curățarea ecranului.
  4. Schimbarea titlului ferestrei Windows în „Calculator”.
  5. Schimbați fontul și culoarea de fundal (albastru închis la gri deschis).
  6. Afișează linia „Introduceți o ecuație”.
  7. Creați o variabilă exp pentru a stoca intrarea utilizatorului.
  8. Calculați rezultatul unei expresii și plasați-l în variabila rezultat.
  9. Schimbarea titlului ferestrei în „Calculat”.
  10. Tipărește șirul „Ecuația ta” și valoarea variabilei exp.
  11. Ieșiți șirul „Soluție” și valoarea variabilei rezultat.
  12. Opriți execuția codului înainte de a apăsa orice tastă.
  13. Accesați eticheta de început, execuția codului va începe cu următoarea comandă după etichetă.

Vezi si

Legături

  • Fișiere lot (bat) WindowsFAQ
  • Sintaxa unor comenzi de fișiere batch Ajutor detaliat.
  • Vitali Bochkarev. Scripturi de administrare (31 august 2009). Arhivat din original pe 27 februarie 2012. Consultat la 15 decembrie 2009.
  • Alexei Alexandrov. lecție de bat-anika // Revista RSDN. - 27 octombrie 2005. - Nr. 2.
  • Bill Stewart. 10 sfaturi pentru utilizarea scripturilor // Windows IT Pro. - Sisteme deschise, ???. - Nu. ???.

Fundația Wikimedia. 2010.

Vedeți ce este un „fișier lot” în alte dicționare:

    Acest termen are alte semnificații, vezi Fișier (sensuri). Fișier (fișier în limba engleză) este un bloc de informații de pe un dispozitiv de stocare extern al computerului care are o anumită reprezentare logică (pornind de la o secvență simplă ... ... Wikipedia

    Concept de fișier (dosar de fișiere, folder în engleză) în calcul: o entitate care vă permite să accesați orice resursă a unui sistem informatic și are o serie de caracteristici: un nume fix (o secvență de caractere, un număr sau ... Wikipedia

    Un fișier text, fiecare linie a căruia este interpretată de sistemul de operare ca un apel către o anumită funcție a sistemului de operare. Fișierele batch sunt utilizate pentru a organiza procesarea loturilor. Sinonime: Fișier lot Vezi și: Fișiere Procesarea datelor... ... Dicţionar financiar

    Concept de fișier (dosar de fișiere, folder în engleză) în calcul: o entitate care vă permite să accesați orice resursă a unui sistem informatic și are o serie de caracteristici: un nume fix (o secvență de caractere, un număr sau ... Wikipedia

    Acest articol sau secțiune necesită revizuire. Vă rugăm să îmbunătățiți articolul în conformitate cu regulile de scriere a articolelor. Acest termen are... Wikipedia

    BAT Extensie fișier: .bat, .cmd (numai pentru Windows NT) Tip format: Limbajul de programare de scriptare Fișier lot - un fișier text în OS/2 sau Windows care conține o secvență de comenzi destinate să fie executate de comanda... Wikipedia

    Tip Interpret de comandă Dezvoltator Seattle Computer Products, Microsoft, IBM, Novell, etc. Sistem de operare DOS (MS DOS, DR DOS, FreeDOS etc.), OS/2, Windows 9x, etc. Limba... Wikipedia

    - (din limba engleză execuție automată execuție automată și pachetul lot, grup în limba engleză) fișier batch sistem (un fișier care conține o secvență de comenzi în limba interpretului de linie de comandă furnizat în ... ... Wikipedia