Osnove batch scriptinga

1

Osnove batch scriptinga

offline
  • m4rk0  Male
  • Administrator
  • Administrator tech foruma
  • Marko Vasić
  • Gladijator - Maximus Decimus Meridius
  • Pridružio: 14 Jan 2005
  • Poruke: 15766
  • Gde živiš: Majur (Colosseum)

Batch fajlovi omogucavaju izvrsavanje odredjenih operacija zadatih od strane korisnika i to na sledeci nacin. Batch skripte pisemo u txt editoru (notepad-u) a da bi smo dobili batch fajl, jednostavno cemo dodati .bat ili .cmd extenziju. Sada cu vam dati primer jedne jednostavne batch skripte.


@echo off
title Testiranje batch fajla

echo OBJASNJENJE:

echo.
echo Ispod se nalaze dve batch komande
echo koje ce izvrsiti pokretanje selektovanih aplikacija.
echo Na kraju ce vam pisati: "press any key to continue..."
echo i nakon pritiska na enter izacicete iz cmd-a
echo u okviru koga je i pokrenut ovaj batch.

echo.
echo Pokrecem digitron
start calc

echo.
echo Pokrecem igricu pinball
start pinball

echo.
pause
exit


Da ne bih naknadno pisao, u okviru samog batch fajla sam vam dao objsanjenje ;> Znaci onu gore jednostavu batch skriptu kopirajte u notepad i idite na "save as" i sacuvajte je na pr kao testing.bat Zatim taj batch fajl pokrenite i pogledajte sta se desava. Ostalo
cete sami shvatiti.

Evo i objasnjenja pojedinih batch oznaka (ovo vecina zna ali nije na odmet ponoviti:

===================================================================

@echo off - uklanja C:\> prompt i bilo koju drugu komandu u okviru batch fajla

echo. - pravi razmak izmedju redova (odnosno pojmova u batch fajlu)

title - daje naziv cmd prozoru pokrenutog batch-a

start - sama rec kaze...pokretanje odabrane aplikacije/instalacije

pause - prikazuje onu poruku "Press any key to continue..."

sleep # - stopira akciju batch fajla za # sekundi

cmdow @ /hid - skriva aktivnost batch fajla tako da niko ne moze da ga stopira u njegovoj "operaciji"

==================================================================


Uzmimo jednu batch komandu za primer:


start "" /wait %systemdrive%\install\neki_program\setup.exe /switch /anotherswitch


E sad cemo ovu komandu da "rasclanimo" i da obajsnimo sta koji deo predstavlja.


start


Pokrece selektovani program


/wait


Ova oznaka zadaje komandu cekanja, tako da sistem ceka dok se ne zavrsi zadata akcija (pokretanje instalacije nekog programa) i tek onda prelzi na sledeci korak ili akciju. Ova komanda je bitna iz prostog razloga sto bi smo opasno zabrljali stvar da te komande nema, jer bi se tada sve odjenom instaliralo (posto nema komande za cekanje) pa mozete sam zamisliti kakve bi posledice bile.
Bitno je napomenuti da kod nekih programa ne funkcionise komanda /wait i u tim slucajevima se koristi komanda sleep.


%systemdrive%\install\neki_program\setup.exe


Pokrece aplikaciju iz install foldera koji se nalazi u folderu $1 u okviru $OEM$ folder-a. Aplikacija tj instalacija nekog programa najcesce ima exe extenziju (vidimo u prilozenom), ali takodje moze imati i extenziju tipa .msi. Ova komanda se takodje moze nalaziti pod navodnicima (") ukoliko postoji razmak u putanji (na pr C:\Program Files).



/switch /anotherswitch


To su switch-evi koji su cesto odvojeni razmakom.

Takodje postoje switchevi koji su "umetnuti" (ili seljacki receno: "crtica ili pregrada paswitch u skracenoj verziji" na kraju batch komande).

Primer:

start /wait %systemdrive%\AdobeReader6\AdobeRdr60_enu_basic.exe
-p"-s/v"/qn""



tj. obratite paznju na deo -p"-s/v"/qn""

"Crtica" ili "minus" ispred nekog znaka predstavlja komandu za akciju koja je suprotna u odnosu na akciju koja bi se izvrsila istom tom komandomali bez "Crtica"-e ili "minus"-a.

Da vas ne bih zamarao sa objasnjenjem svakog switcha posebno, jednostavno posetite:

----------------------------------------------------------------------------------
http://www.chebucto.ns.ca/~ak621/DOS/DOS-Swit.html
http://msdn.microsoft.com/library/en-us/vsintro7/h.....itches.asp
http://www.k1ea.com/hints/switches.htm
http://www.computerhope.com/switches.htm
---------------------------------------------------------------------------------
tu vam je sve objasnjeno..


Batch fajlovi se mogu startovati i iz cmdlines.txt, svcpack.inf kao i iz [GuiRunOnce] dela. Tako smestene batch komande bice pokrenute na 12, 13 minuta do kraja instalacije winxp-a (T-13 / T-12 minute stage of Windows XP Setup), a ove iz [GuiRunOnce] ce biti pokrenute po prvom logovanju.
cmdlines.txt dobro dodje za dodavanje HKEY_CURRENT_USER registry tweakova, a SVPCACK.INF dobro dodje za dodavanje win zakrpa.

Part of tutorial: "Open your windows (os)" by m4rk0



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 10 Okt 2005
  • Poruke: 13526
  • Gde živiš: Beograd

Sjajno!
E, a sad ovako... Kako da dam "Environment Variable" za CD, slicno %systemdrive%? Radim pod Win98. I kako da postignem da se posle izvrsenja batch komande iskljuci onaj dos prozor?



offline
  • m4rk0  Male
  • Administrator
  • Administrator tech foruma
  • Marko Vasić
  • Gladijator - Maximus Decimus Meridius
  • Pridružio: 14 Jan 2005
  • Poruke: 15766
  • Gde živiš: Majur (Colosseum)

Environment Variable ne znam kako da das za CD (tj uopste za opticki drajv) http://www.wilsonmar.com/1envvars.htm

A posle izvrsenja batch komande dos prozor ce se iskljuciti ako se si zadao komandu exit na kraju batch fajla koji si kreirao. Znaci jos u txt editoru pri kreiranju batch fajla na kraju treba da postavis komandu exit i automatski ce prozor biti zatvoren nakon izvrsenja komande. A ukoliko pre komande exit postavis i komandu pause, zatvaranje mozes vrsiti klikom na bilo koje dugme...

offline
  • Pridružio: 10 Okt 2005
  • Poruke: 13526
  • Gde živiš: Beograd

Hvala za link, a sto se tice EXIT na kraju batch fajla, to kod mene ne radi! Sta moze da bude uzrok?

offline
  • m4rk0  Male
  • Administrator
  • Administrator tech foruma
  • Marko Vasić
  • Gladijator - Maximus Decimus Meridius
  • Pridružio: 14 Jan 2005
  • Poruke: 15766
  • Gde živiš: Majur (Colosseum)

Evo komandi koje mozete koristiti pri kreiranju vasih batch fajlova.

ASSOC - Prikazuje ili modifikuje asocijacije ekstenzija fajlova.
AT - Planira vreme izvrsavanja programa i komandi (predstavlja komandnu verziju Task Schedulera)
ATTRIB - Prikazuje ili menja atribute fajlova
BREAK - Ukljucuje/iskljucuje prosirenu proveru za ctrl+c
CACLS - Prikazuje ili modifikuje access control liste (ACL) fajlova.
CALL - Poziva jedan batch program iz drugog.
CD - Vrsi promenu aktivnog direktorijuma.
CHCP - Menja DOS/Windows kodnu stranu (kodna strana ima isto znacenje kao u internet browserima)
CHDIR - Komanda identicna komandi CD
CHKDSK - Proverava disk i prikazuje izvestaj o statusu.
CHKNTFS - Prikazuje ili modifikuje proveru diska za vreme butovanja.
CLS - Uklanja sadrzaj cmd ekrana i postavlja prompt na pocetak prozora
CMD - Pokrece novi primer command prompta.
COLOR - Postavlja defaultnu boju pozadine
COMP - Poredi sadrzaj dva fajla ili grupe fajlova
COMPACT - Prikazuje ili menja kompresiju fajlova na NTFS particiji.
CONVERT - Konvertuje FAT u NTFS.
COPY - Kopira jedan ili vise fajlova na dredjenu lokaciju.
DATE - Prikazuje ili postavlja datum.
DEL - Brise jedan ili vise fajlova.
DIR - Prikazuje listu fajlova i poddirektorijuma u direktorijumu
DISKCOMP - Poredi sadrzaj dva flopi diska.
DISKCOPY - Kopira sadrzaj sa jednog flopy diska na drugi.
DOSKEY - Edituje komandne linije, opoziva Windows komande, i kreira makroe, omogucava istoriju i spisak prethodno koriscenih komandi pod dosom.
ECHO - Prikazuje poruke, ili ukljucuje/iskljucuje odzivanje komandi.
ENDLOCAL - Suprotna komanda od komande SETLOCAL
ERASE - Brise jedan ili vise fajlova.
EXIT - Gasi CMD.EXE program
FC - Poredi dva ili vise fajlova i prikazuje njihove razlike.
FIND - Potraga za recima u fajlovima i folderima
FINDSTR - Potraga za stringovima u fajlovima
FOR - Pokrece specificnu komandu za svaki fajl u grupi fajlova.
FORMAT - Formatira disk.
FTYPE - Prikazuje ili menja tipove fajla.
GOTO - Usmerava do obelezene linije u okviru batch fajla
GRAFTABL - Omogucava prikazivanje dodatnih simbola u grafickom modu.
HELP - Pomocne informacijae u vezi sa komandama
IF - Izvrsava uslovnu obradu u batch programima.
LABEL - Kreira, menja, ili brise volume label (ime diska)
MD - Kreira direktorijume
MKDIR - Komanda identicna komandi MD
MODE - Konfigurise periferne uredjaje
MORE - Prikazuje stranu po stranu outputa nekog drugog programa
MOVE - Pomera jedan ili vise fajlova iz jednog direktorijuma u drugi
PATH - Prikazuje ili postavlja put za pretragu za izvrsne fajlove.
PAUSE - Prekida izvrsavanje batch fajla i izbacuje poruku.
POPD - Vraca prethodnu vrednost aktivnog direktorijuma sacuvanog putem PUSHD.
PRINT - Stampa tekstualni fajl.
PROMPT - Menja prompt.
PUSHD - Prvo sacuva aktivni direktorijum pa ga onda menja.
RD - Uklanja direktorijum.
RECOVER - Vraca citljive podatke sa ostecenog diska
REM - Predstavlja komentar u DOS batch fajlovima
REN - Preimenuje fajlove.
RENAME - Komanda identicna komandi REN
REPLACE - Zamenjuje fajlove
RMDIR - Komanda identicna komandi RD
SET - Prikazuje, postavlja ili brise Windows environment varijable.
SETLOCAL - Postavljanje lokalizovanih podesavanja batch skripta (raspored tastature i sl).
SHIFT - Pomera poziciju zamenljivih parametara u batch fajlu
SORT - Sortira ulazne podatke
START - Pokrece zaseban prozor u kome se startuje program ili komanda
SUBST - Asocira putanju drive letterom
TIME - Prikazuje ili postavlja sistemsko vreme.
TITLE - Postavlja naslov za cmd.exe prozor.
TREE - Graficki prikaz strukture direktorijuma
TYPE - Prikazuje sadrzaj tekstualnog fajla
VER - Prikazuje verziju windowsa.
VERIFY - Proverava da li su fajlovi korektno upisani na flopy disk
VOL - Prikazuje volume label diska i serijski broj.
XCOPY - Kopira fajlove i grane direktorijuma.

Evo i u pdf-u:

https://www.mycity.rs/must-login.png

offline
  • den78  Male
  • Super građanin
  • Pridružio: 07 Jul 2005
  • Poruke: 1227
  • Gde živiš: Moe's Tavern

10x care Wink

offline
  • Pridružio: 28 Apr 2011
  • Poruke: 1

Sve je to extra i korisno ali al zna neko sta znaci pause >nul znam sta znaci pause ali nul?

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12486
  • Gde živiš: Južni pol

Napisano: 28 Apr 2011 23:15

Citat:Suspends processing of a batch program and displays a message prompting the user to press any key to continue.
http://www.microsoft.com/resources/documentation/w.....x?mfr=true

Citat:You can use redirection operators to redirect command input and output streams from the default locations to different locations. The input or output stream location is referred to as a handle
http://technet.microsoft.com/en-us/library/bb490982.aspx

Citat:If you want to suppress the message (thus making the SHELL operation less visible), you can redirect the standard MS-DOS output to the NUL device.
http://support.microsoft.com/kb/40592

Za sve postoji dokumentacija.

Dopuna: 28 Apr 2011 23:23

Imaš ovde malo više o redirekciji sa primerima:
http://ss64.com/nt/syntax-redirection.html

Pošto je prethodni link u kome se pominje redirekcija na nul vezan za DOS i QBasic (mada je princip isti i kod Windows NT baziranih sistema).

offline
  • Pridružio: 06 Feb 2012
  • Poruke: 1872

Gledam sad ove osnove batch scriptinga i shvatio sam (ako mi nekad bude trebalo učiću i skripte na pamet sad ne) ali za sta .bat fajlovi zapravo sluze.Gdje se najcesce upotrebljavaju?

offline
  • Pridružio: 26 Avg 2010
  • Poruke: 10622
  • Gde živiš: Hypnos Control Room, Tokyo Metropolitan Government Building

Jimmy4 ::Gledam sad ove osnove batch scriptinga i shvatio sam (ako mi nekad bude trebalo učiću i skripte na pamet sad ne) ali za sta .bat fajlovi zapravo sluze.Gdje se najcesce upotrebljavaju?

Najčešće se upotrebljavaju radi automatizacije određenih poslova.

Ko je trenutno na forumu
 

Ukupno su 1006 korisnika na forumu :: 33 registrovanih, 2 sakrivenih i 971 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., babaroga, Ben Roj, bigfoot, bojank, Bubili, Darkhunter, Dimitrije Paunovic, DonRumataEstorski, draganl, Georgius, HogarStrashni, ILGromovnik, ivica976, kikisp, kovinacc, Kubovac, kybonacci, Magistar78, milenko crazy north, Milos ZA, nenooo, Outis, Panonsky, panzerwaffe, pein, Shilok, sickmouse, slonic_tonic, Smd, sovanova95, vaso1, Vlad000