- Ukusetshenziswa kwe-SETLOCAL, izandiso zomyalo, kanye nokwandiswa okubambezelekile kukuvumela ukuthi uhlukanise indawo futhi ulawule ngokunembile iziguquguquko kuma-batch script ayinkimbinkimbi.
- I-ERRORLEVEL iyisisekelo sokuphathwa kwamaphutha, futhi ukuyihlanganisa nabaqhubi abafana ne-|| kuphumela kukhodi ehlanzekile nefundeka kalula. I-CMD.
- Ukunwetshwa okulibazisekile kubalulekile kuma-loop nezakhiwo eziguquguqukayo, njengemidlalo noma ukuphathwa kwe-matrix okulingisiwe kumafayela e-batch.
- Ukwazi kahle izinqubo ezingezansi, ukulawula izinhlamvu ezikhethekile, kanye namaphethini e-batch athuthukile kwenza i-CMD ibe ithuluzi elisebenzayo lokwenza izinto ngokuzenzakalela okuqinile.
Ukusebenza ne-CMD ezingeni elithuthukile kuhilela okungaphezu nje kokulahla imiyalo embalwa engahleliwe . Uma uqala ukusebenzisa amafayela e-batch ayinkimbinkimbi , ukunwetshwa okuguquguqukayo okubambezelekile, ukulawulwa kwesandiso sefayela, kanye nokuphathwa kwamaphutha okulungisiwe kahle kwenza umehluko omkhulu phakathi kweskripthi esiqinile kanye neskripthi esiphahlazeka buthule noma sivala ikhonsoli ngaphandle kwesixwayiso. Kulesi sihloko, sizongena sijule kulesi sihloko, sihlola amaqhinga nama-nuances angempela avame ukungabikho eziqondisweni eziyisisekelo.
Uma uke wahlangabezana nefayela lakho le-.bat liphahlazeka uma ulisebenzisa, i-FOR loop engasebenzisi amanani alindelekile, noma i-ERRORLEVEL isebenza ngokungafanele, uzofuna ukuqhubeka ufunda. Sizobuyekeza ukuthi yimiphi imiyalo efana ne -SETLOCAL , ENDLOCAL , delayed expansion , ama-opharetha okuphatha amaphutha afana ne- || , kanye namanye amaphethini ajwayelekile asetshenziswa kuma-script athuthukile ayenzayo ngempela, kufaka phakathi izibonelo ezivela emidlalweni nasezinsizeni ezilawula iziguquguquko eziningi ezinamandla.
Kuyini i-SETLOCAL futhi kungani ibalulekile kumafayela e-batch athuthukile?
Umyalo we-SETLOCAL uyisisekelo sokulawula imvelo ngaphakathi kweskripthi se-batch ku- Windows . Umsebenzi wawo oyinhloko ukuqala "ububanzi bendawo" bezinto eziguquguqukayo zemvelo lapho noma yiziphi izinguquko ozenzayo zizobuyiselwa khona ngokushesha nje lapho i-ENDLOCAL isiqediwe noma ukuphela kwefayela le-.bat kufinyelelwe.
I-syntax eyisisekelo ye-SETLOCAL imi kanje, futhi amasu amaningi athuthukile kakhulu nge-CMD asekelwe kuwo:
I-syntax: setlocal
Usebenzisa lolu hlelo ungalawula Izinto ezimbili ezibaluleke kakhulu: izandiso zomyalo we-CMD kanye nokwandiswa kwe-environment variable okubambezelekile. Zombili izilungiselelo zisetshenziswa kusukela lapho ubiza khona SETLOCAL kuze kube ENDLOCAL kwenzeka ngengozi, ngaphandle kokuthinta ukucushwa komhlaba wonke kweseshini yekhonsoli ngaphandle kwalelo bhulokhi.
Kubalulekile ukuqonda ukuthi ukusebenzisa i-SETLOCAL ngaphandle kwefayela le-.bat (isibonelo, ngokukuthayipha ngesandla kukhonsoli esebenzisana nayo) Akunamphumela wangempela.Inhloso yayo ihloselwe izikripthi, lapho udinga ukuhlukanisa khona izinguquko eziguquguqukayo ezifana PATHizindlela zesikhashana, izinketho zohlelo lokusebenza, njll., ngaphandle kokushiya indawo yomsebenzisi "ingcolile" ngemva kokuthi ifayela le-batch seliqediwe.
Isici esibalulekile se-SETLOCAL Isebenza ngendlela ehlanganisiwe: ungaba nezinhlobo eziningana SETLOCAL y ENDLOCAL ngaphakathi kweskripthi esifanayo, esinye ngaphakathi kwesinye. Izinga ngalinye elihlanganisiwe ligcina "isithombe-skrini" semvelo, futhi uma senziwe ENDLOCAL isimo sangaphambi kwesokugcina sihlala sibuyiselwa SETLOCAL.

Amapharamitha e-SETLOCAL: izandiso kanye nokwandiswa okulibazisekile
I-SETLOCAL ingathola amapharamitha okuvumela noma ukukhubaza kokubili izandiso zomyalo kanye nokwandiswa okulibazisekile kweziguquguquko zemvelo. Amapharamitha atholakalayo yilawa:
- i-enableextensions: Inika amandla izandiso zomyalo ezifika ku-
ENDLOCALokuhambisanayo, kungakhathaliseki ukuthi babenjani ngaphambili. - khubaza izandiso: khubaza lezo zandiso kuze kube okulandelayo
ENDLOCAL. - inikwe amandla ukwandiswa: ivuselela ukwanda okubambezelekile kweziguquguquko zemvelo.
- disabledelayedexpansion: ikhubaza lokho kunwetshwa.
- /?: ibonisa usizo lwe-SETLOCAL ku ngokushesha komyalo.
Izandiso zomyalo we-CMD Zandisa ukuziphatha kwemiyalo eminingi yakudala, njengokuthi IF, FOR, SET o CALLIzikripthi ezithuthukisiwe zivame ukuncika kulezi zandiso, ngakho-ke kuvamile ukubona amabhlogo anjengalawa:
Isibonelo: setlocal enableextensions enabledelayedexpansion
REM aquí va el código avanzado que necesita extensiones y delayed expansion
endlocal
Ukwandiswa okubambezelekile Lokhu kubalulekile lapho usebenza ngezihibe neziguquguquko ezishintsha ngaphakathi kwe- FOR noma amabhlogo anama-parentheses. Esikhundleni sokusebenzisa %variable%Kusetshenziswa izibabazo !variable!Lokhu kuvumela inani ukuthi lihlolwe ngesikhathi sokusebenza kwe-iteration ngayinye, hhayi lapho ibhulokhi lonke lihlungwa.
Imininingwane ecashile kodwa ewusizo kakhulu kunjalo SETLOCAL kushintsha okuguquguqukayo ERRORLEVEL kuye ngegama layo: uma izimpikiswano zichaziwe enableextensions/disableextensions o enabledelayedexpansion/disabledelayedexpansion, I-ERRORLEVEL isethwe ku-0Uma isebenza ngaphandle kwamapharamitha, Izinguquko ze-ERRORLEVEL zibe yi-1Lokhu kuziphatha kungasetshenziswa ukuthola ukuthi izici ezithile ziyatholakala yini.
Ukuziphatha kwe-ERRORLEVEL kanye nokutholakala kwezandiso ezitholakalayo
I-ERRORLEVEL variable iyindlela ejwayelekile yokunquma ukuthi umyalo uphumelele noma wehlulekile. Kodwa-ke, i-CMD inezinkinga ezithile lapho izandiso zikhutshaziwe, futhi kulula ukuzithola umangale uma ucabanga ukuthi i-ERRORLEVEL ihlale ivuselelwa ngokuzenzakalelayo.
Iphethini evamile ebhaliwe Kuqukethe ukuqalisa i-ERRORLEVEL ibe yinani elingelona elero kusetshenziswa umyalo VERIFY ngempikiswano engavumelekile, bese usebenzisa kusukela lapho SETLOCAL ukuhlola ikhono lokusebenzisa izandiso. Isibonelo esijwayelekile singaba yinto efana nale:
Isibonelo: verify other 2>nul
setlocal enableextensions
if errorlevel 1 echo Unable to enable extensions
Kulesi siqeshana, okulandelayo kwenziwa:Okokuqala, ukusetshenziswa kwe verify other Ukusebenzisa ipharamitha engasekelwa kuphoqa i-CMD ukuthi inikeze inani elingelona u-zero ku-ERRORLEVEL. Bese, SETLOCAL enableextensions Kufanele usethe i-ERRORLEVEL ibe ngu-0 uma ukwazile ukusebenzisa izandiso. Ngakho-ke, uma i-ERRORLEVEL ihlala ku-1 ngemva kwalowo myalo, kusho ukuthi izandiso azitholakali.
Lokhu kungenxa yokuthi, lapho izandiso zomyalo zikhutshaziweI-CMD ayilungisi i-ERRORLEVEL ngendlela evamile kweminye imisebenzi. Yingakho leli qhinga elincane lidingeka kusengaphambili. verifyEzikriphthini eziqinile ezidinga ukusebenza ezindaweni "ezivinjelwe" noma ezidala, lolu hlobo lokuhlola lungaba usizo kakhulu.
Futhi khumbula ukuthi i-SETLOCAL engaphandle kwefayela le-batch ngeke ikusize ukuphatha i-ERRORLEVEL kuseshini yokusebenzisana, ngoba umphumela wendawo yemvelo uhloselwe kuphela umongo wokwenziwa kwesikripthi.
Isibonelo esisebenzayo se-SETLOCAL: ukuguqula i-PATH okwesikhashana
Enye yezinhlelo zokusebenza ezivame kakhulu ze-SETLOCAL kuthinta i-variable PATH ngaphakathi kwefayela le-.bat ukuze uqalise uhlelo lokusebenza olusizayo noma iskripthi, kodwa ngaphandle kokushiya lokho kuguqulwa kusebenza isikhathi esisele seseshini.
Isikripthi esiphelele sesibonelo , esiqala uhlelo lwenethiwekhi "ye-superapp", siqondise kabusha umphumela waso kufayela, bese sivula lelo fayela ku-Notepad, singase sibukeke kanje:
Isibonelo sesikripthi: rem *Begin Comment
rem Este programa inicia el programa por lotes superapp en la red,
rem redirige la salida a un archivo y muestra el archivo
rem en el Bloc de notas.
rem *End Comment
@echo off
setlocal
set path=g:\programs\superapp;%path%
call superapp > c:\superapp.out
endlocal
start notepad c:\superapp.out
Kulesi skripthi, zonke izinguquko ze-PATH kukhawulelwe kubhulokhi elivikelwe yi- SETLOCAL y ENDLOCALNgaphandle kwaleso sigaba, indawo yomsebenzisi (kufaka phakathi i-PATH) ayishintshi. Le phethini isetshenziswa kabanzi lapho kuhlanganiswa amathuluzi ezinkampani zangaphandle ngaphandle kokufuna "ukugcwala" indawo yonke.
Qaphela futhi ukusetshenziswa kwe-CALL ukwenza superappLokhu kuvumela ukugeleza kwefayela le-batch ukuthi kuqhubeke ngokujwayelekile ngemva kokuqedwa, kuqondisa kabusha umphumela kufayela bese ekugcineni kwethulwa i-Notepad ukuze ibonise.
Ukuphathwa kwamaphutha eqembu: ERRORLEVEL, IF kanye no-|| opharetha
Ku-batch scripting, ukuphathwa kwamaphutha okuvamile kuhilela ukuhlola i-ERRORLEVEL ngokushesha ngemva komyalo ngamunye "obucayi". Uhlelo oluvame kakhulu lulandelayo:
Iphethini: copy blah ..\test
if %errorlevel% neq 0 exit /b %errorlevel%
Okwenzekayo lapha ukuthi ikhophi iyasebenza , futhi uma i-ERRORLEVEL ingeyona i-0, iskripthi siyaphuma, sibuyisele leyo khodi yephutha efanayo. Kuyindlela ecacile kakhulu futhi ehambisanayo, kodwa iqala ukugcwalisa iskripthi ngamabhulokhi e-IF aphindaphindayo okwenza kube nzima ukuwafunda.
Ukuze kuhlanzwe ikhodi, abasebenzisi abaningi abathuthukile bamukele i-logic operator ||Lo opharetha usebenzisa umyalo wesibili kuphela uma owokuqala wehluleka (okungukuthi, uma i-ERRORLEVEL yawo ingeyona i-zero). Isibonelo sangaphambilini singafushaniswa ku:
Ifomu elihlanganisiwe: copy blah ..\test || exit /b %errorlevel%
Lowo mugqa owodwa uveza inhloso efanayoUma ikhophi yehluleka, phuma kuskripthi, ubuyisele iphutha. Incane kakhulu, kulula ukuyifunda, futhi ngokuvamile inhle kakhulu. Umlingani omuhle womsebenzisi uthi &&, eqhuba umyalo wesibili kuphela uma owokuqala uphumelela.
Labo abasebenzisa izikripthi zeqoqo nsuku zonke Ngokuvamile bakhetha uhlobo olune || Ukuze kucace, ngaphandle kokuthi udinga ukuhambisana nezinguqulo ze-CMD ezindala kakhulu noma izindawo ezingenazo izandiso. Empeleni, ezinhlelweni zesimanje ze-Windows, lo opharetha usebenza kahle futhi wenza kube lula kakhulu ukuphatha amaphutha.
Amafasitela avala ngenkani: indlela yokuxilonga nokuyivimbela
Inkinga evamile kakhulu lapho usebenzisa amafayela e-.bat ukuthi ukuchofoza kabili kuvula ikhonsoli, kukhipha okuthile ngokushesha okukhulu, bese iwindi livala, ngaphandle kokukunikeza isikhathi sokubona ukuthi kwenzekeni. Ngezinye izikhathi okuqukethwe ifayela le-batch akusebenzi kahle.
Abasebenzisi abaningi bazama ukulungisa lokhu besebenzisa i-PAUSE noma i-CMD /K , kodwa akusebenzi ngaso sonke isikhathi, ikakhulukazi uma iskripthi siqukethe amaphutha amakhulu e-syntax, izindlela ezingalungile, noma imiyalo yokuqala enephutha. Ku -Windows 11 (nezinguqulo ezifanayo), ezinye iziphazamiso zibangela ukuthi i-CMD iphele ngokushesha ngaphandle kokubonisa noma yimiphi imiyalezo ecacile.
Ukuze kuxazululwe la macala, kunconywa Vula umyalo ngesandla (Win+R → cmd) bese uqalisa ifayela le-.bat kusuka lapho ngokuthayipha indlela yalo. Ngale ndlela, noma ngabe iskripthi sehluleka, umyalo uzohlala uvulekile, okukuvumela ukuthi ufunde noma yimiphi imiyalezo yamaphutha, umphumela wokuxilonga, noma ungeze imigqa. echo ukuze kutholakale imikhondo yangaphakathi.
Omunye umkhuba omuhle ukuvumela i-ECHO ekuqaleni kweskripthi ngenkathi kulungiswa amaphutha (@echo on) bese uyivala ngemva kokuba izinkinga sezixazululiwe (@echo offLokhu kukuvumela ukuthi ubone ukuthi yimiphi imiyalo esetshenziswayo, ngokulandelana ngayiphi indlela, kanye nangamaphi amapharamitha.
Ukuphathwa kwamaphutha okuthuthukisiwe: amaphethini asebenzayo
Ngale kokusebenzisa nje i-ERRORLEVEL ngemva komyalo ngamunye, kunezindlela eziphindaphindayo ezisiza ekwenzeni ikhodi ifundeke kalula futhi iqine. Ezinye izibonelo:
- Ukuhlanganisa imiyalo nge-& kanye ne-||:
comando1 && comando2 || comando3ukuveza "uma umyalo1 uhamba kahle, sebenzisa umyalo2; uma wehluleka, sebenzisa umyalo3". - Imisebenzi enelebula ethi EXIT /B: uhlobo lwezinhlelo ezingaphansi
call :MiFuncionezibuyisela amakhodi ephutha athile, kamuva ahlolwe ngeif errorlevel. - Ukuqaliswa okusobala kwe-ERRORLEVEL ngaphambi kwezingxenye ezibalulekile, ukuze kungadluli amaphutha amadala.
Ukuphathwa kwamaphutha kungabuye kubekwe endaweni eyodwa ukuba nelebula elifanayo, isibonelo :ErrorFatal, okufinyelelwa ngezindlela goto o call Uma kukhona okungahambi kahle, bonisa imiyalezo ecacile kanye nezinsiza zokuvala uma kudingeka (amafayela wesikhashana, izinguquko zesikhombisi, njll.).
Kunoma ikuphi, isinqumo phakathi kokusebenzisa i-IF ERRORLEVEL noma opharetha || Kuncike kakhulu esitayeleni sakho kanye nezinga lokuhambisana olifunayo. Ezimweni eziningi zamanje, indlela || Akugcini nje ngokuba semthethweni, kodwa futhi kuyafiseleka ukuze kucace.
Ukwandiswa nokusebenza okulibazisekile ezikripthini eziyinkimbinkimbi
Uma usebenza ngezakhiwo eziyinkimbinkimbi, njengemidlalo noma izixhumi zekhonsoli "ezinemifanekiso" (isibonelo, i-batch Minesweeper), ukunwetshwa okulibazisekile kuba yinto ebalulekile. Kulezi zimo, kusetshenziswa ama-matrices alingisiwe aneziguquguquko zesitayela. bfuthi kuyadingeka ukubuyekeza nokubonisa isimo ngezihibe ezivame kakhulu.
Isibonelo esijwayelekile kumdlalo we-Minesweeper osetshenziswa kwimodi ye-batch kungaba ukudabula ebhodini nokwakha imigqa ngolwazi oluvela kuseli ngayinye. Ukucubungula imigqa kusengaphambili kungase kubukeke kanje (kufanelane nalokho okusetshenziswa njalo):
Ucezu: for /l %%g in (0,1,!width!) do (
set "row=!row!!b!!d!"
)
for %%g in ("!widthx!") do (
set "row=!row!!b!"
)
Lapha, ukwandiswa okubambezelekile kuyasetshenziswa. (izikhalo) !row!, !b!njll.) ukuhlanganisa okuqukethwe okuguquguqukayo kube yi-variable emele umugqa webhodi. Ngaphandle kokunwetshwa okulibazisekile, bekungeke kwenzeke ukwakha lezi zintambo ngendlela efanele ngaphakathi kwe-loop.
Inkinga evame ukuvela emabhodini amakhulu Kumayelana nokusebenza: uma isibuyekezo ngasinye sihilela amakhulu emiyalo setIkhonsoli iba kancane ngokuphawulekayo. Abanye abasebenzisi bazama "ukucubungula" imigqa ibe yiziguquguquko bese belahla konke ngesikhathi esisodwa, kodwa bathola ukuthi umphumela uhunyushwa njengombhalo ocacile esikhundleni se-"executable code."
Leli phuzu liyisihluthulelo: I-CMD ayihloli okuqukethwe kwe-variable njengokungathi iyiskripthi esisha ngaphandle kokuthi kusetshenziswe indlela ethile engaqondile (isibonelo, ukuyibhalela kufayela le-.bat bese uyibiza ngokuthi call), ngakho-ke ukuzama ukwenza ukuguquguquka nge-"code" execute ngqo akusebenzi njengoba bekulindelekile kwezinye izilimi.
Isu elengeziwe lokuthuthukisa ukusebenza ukunciphisa imisebenzi ethinta ukuhluzwa okuyinkimbinkimbi (njengezinkomba eziningi zokunwetshwa ezibambezelekile ngaphakathi kwezihibe ezijulile), futhi esikhundleni salokho kubalwe kusengaphambili izingxenye ezimile noma ezimile ngaphandle kwezihibe ezibalulekile. Kodwa-ke, ngaphakathi kwemikhawulo ye-CMD, i-Minesweeper enamakhulu amaseli izohlala ithola isijeziso sokusebenza.
Isibonelo somsebenzi wokubonisa ideshibhodi onokunwetshwa okubambezelekile
Umsebenzi wokudweba ibhodi kumdlalo we-batch Minesweeper ungafaka izendlalelo eziningana ze-logic: ukubeka kabusha i-cursor, ukumaka okwesikhashana iseli elikhethiwe, ukwakha umugqa wokumelela ngomugqa, bese kubuyiselwa amanani okuqala. Isibonelo esingacacile singaba:
Inqubo elinganiselwe: :board
echo %esc%==]"
set "board="
for /l %%g in (0,1,!height!) do (
set "board=!board!!row!!lf!"
)
echo !board!
set "b= "
set "b= "
exit /b
Lo mkhuba uhilela okulandelayo: ikhesa lithuthela ekhoneni eliphezulu kwesobunxele (kusetshenziswa ukulandelana kokubaleka okugcinwe ku %esc%), izinkomba ezisizayo ziyabalwa (temp_var), izinqamuleli ezibonakalayo zimakwe ku-matrix buchungechunge lwakhiwe board ukuhlanganisa imigqa eseyicutshunguliwe kanye nokuhlukana kwemigqa (!lf!), konke kuphrintwa ngesikhathi esisodwa bese iziguquguquko zibuyiselwa esimweni sazo sokuqala.
Umbuzo ovame ukuvela lapha Kumayelana nendlela yokuqinisekisa ukuthi ukucubungula imigqa akukhiqizi umbhalo kuphela, kodwa futhi kuhunyushwa njengemiyalo noma kuvuselela ibhodi ngempumelelo. Ku-CMD, okuqukethwe okuguquguqukayo akuhlolisiswa kabusha ngokuzenzakalelayo njengekhodi, ngakho ikhambi lihilela ukushintsha indlela: ukunciphisa inani set y echo ngokubuyekeza, nokuhlanganisa umphumela ngangokunokwenzeka, njengoba iphethini yangaphambilini yenza ngokuguquguquka board.
Isu elengeziwe lokuthuthukisa ukusebenza ukunciphisa imisebenzi ethinta ukuhluzwa okuyinkimbinkimbi (njengezinkomba eziningi zokunwetshwa ezibambezelekile ngaphakathi kwezihibe ezijulile), futhi esikhundleni salokho kubalwe kusengaphambili izingxenye ezimile noma ezimile ngaphandle kwezihibe ezibalulekile. Kodwa-ke, ngaphakathi kwemikhawulo ye-CMD, i-Minesweeper enamakhulu amaseli izohlala ithola isijeziso sokusebenza.
Amaphutha okucubungula nezinhlamvu ezikhethekile
Kuma-script amakhulu, omunye umthombo ovamile wezinkinga izinhlamvu ezikhethekile: ama-parentheses, ukuqondisa kabusha, izimpawu zokucaphuna, amaphuzu okubabaza, njll., kanye nezinkinga zokufaka ikhodi . Uma usebenzisa ukunwetshwa okulibazisekile kanye nama-loop anezidleke, lezi zinhlamvu zingaphula ukuhluzwa komyalo uma zingaphunyuki kahle.
Isibonelo, i-parenthesis yokuvala engalindelekile Lokhu kungabangela amaphutha anjengokuthi “Lo myalo awusekelwa” noma kumane kuhoxise ukwenziwa kwebhulokhi. Ukuze ugweme lokhu, kufanele uqaphele kakhulu lapho wakha imigqa nge echo eziqukethe omakaki noma izimpawu yegobolondo, futhi bathembele kumasu anjengokuthi echo( noma ukukopishwa kwezinhlamvu ezithile ukuze kuphunyuke.
Amadokhumenti akhethekile ekucutshungulweni kwe-batch okuthuthukisiwe avame ukufaka amathebula "ezinhlamvu ezikhethekile" kanye namanothi okuthi ziphunyuka kanjani ezimweni ezahlukene (ngaphakathi kwe-FOR loops, kumabhulokhi anama-parentheses, lapho ukunwetshwa okulibazisekile kuyasebenza, njll.). Nakuba singeke singene emininingwaneni ngayinye lapha, kufanelekile ukukhumbula ukuthi lapho iskripthi siyinkimbinkimbi kakhulu, kulapho kufaneleka khona ukusihlola isinyathelo ngesinyathelo futhi sibukeze ngokucophelela ukuthi lezi zimpawu ziphathwa kanjani.
Kuvamile futhi ukuthola amasu ayinkimbinkimbi kakhulu ahlanganisa i-CMD nezinye izilimi noma amathuluzi (njenge-VBScript noma i-PowerShell ) ngokubhala izingcezu ezincane kumafayela esikhashana bese uzisebenzisa, sisebenzisa izici ezinhle kakhulu zendawo ngayinye. Kulezi zimo, ukuphathwa ngokucophelela kwezinhlamvu ezikhethekile kanye nokuqondisa kabusha kuba kubaluleke kakhulu.
Imisebenzi, izinqubo ezingaphansi, kanye nezakhiwo ezithuthukisiwe eqenjini
Umhlaba wokuhlanganisa okuthuthukisiwe Akugcini nje emiyalweni ehlukanisiwe: kukhona yonke i-ecosystem yamaphethini okwakha imisebenzi engasetshenziswa kabusha, ukulingisa ama-array, ukuphatha izingxabano, nokubuyisa imiphumela. Umkhuba ojwayelekile ukusebenzisa amathegi (:MiFuncion) nomyalo call, futhi dala amamenyu asebenzisanayo:
Isibonelo: @echo off
call :FunctionX
rem Más código aquí
exit /b 0
:UmsebenziX
Iphutha lokuphatha ngaphakathi komsebenzi
i-rem …
ukuphuma /b 0
Imizila emincane yeqembu Zivumela ukugoqwa kwe-logic eyinkimbinkimbi, phakathi kwezinye izinto, ukuguqula izingcezu eziphindaphindwayo (njengokuhlola amaphutha, ukuguqulwa kwezintambo, noma ukuguqulwa kwamafayela) zibe amabhlogo angabizwa. exit /b I-ERRORLEVEL ethile ingabuyiselwa kumuntu oshaya ucingo, bese ihlolwa ukuthi if errorlevel noma nabaqhubi abafana ||.
Kunezindlela ezithuthuke kakhulu ezisebenzisa i-Alternate Data Streams (ADS) ukugcina ikhodi yokusiza ehlotshaniswa nefayela le-.bat uqobo, noma ezifaka izingxenye ezibhalwe ngezinye izilimi njenge-VBScript ngaphakathi kwefayela elifanayo. Lezi zindlela zandisa amakhono okucubungula ama-batch, kodwa futhi ziyinkimbinkimbi ekugcinweni nasekulungiseni amaphutha, ngakho-ke zivame ukugcinelwa izimo ezithile kakhulu.
Kumabhukwana amaningi okubhala amaqoqo amaningi Izihloko ezinjengokukhiqizwa kwamafayela aguquguqukayo kanye nokusetshenziswa nazo zihlanganisiwe. pushd y popd ukuphatha ngokuphephile izincwajana, ukushintshwa kwezimpikiswano (%1, %2njll.), kanye nomehluko omncane phakathi kwe-.BAT kanye ne-.CMD. Konke lokhu kuzuza kakhulu ekulawulweni kwemvelo okuhle nge SETLOCAL/ ENDLOCAL kanye nokuphathwa kwamaphutha ngendlela ehlelekile.
Ukuqonda ukunwetshwa okubambezelekile , ukuphathwa kwe -ERRORLEVEL , kanye nokusetshenziswa okunesu kwe -SETLOCAL yikho okuhlukanisa izikripthi ze-batch "ezenziwe ekhaya" kulezo ezingasetshenziswa ngempela ezenzakalelayo eziyinkimbinkimbi nezithembekile, kungaba ngamathuluzi angaphakathi, izinsiza zesistimu, noma ngisho nemidlalo emincane yekhonsoli kanye nokuhlolwa.
Umbhali oshisekayo ngomhlaba wamabhayithi nobuchwepheshe ngokujwayelekile. Ngiyathanda ukwabelana ngolwazi lwami ngokubhala, futhi yilokho engizokwenza kule bhulogi, ngikubonise zonke izinto ezithakazelisayo kakhulu ngamagajethi, isofthiwe, ihadiwe, izitayela zobuchwepheshe, nokuningi. Inhloso yami ukukusiza ukuthi uzulazule emhlabeni wedijithali ngendlela elula nejabulisayo.
