Errorlevel on 0, jos prosessi onnistui.
Errorlevel on 1 tai suurempi, jos prosessissa on virhe.
Virhetason testaaminen on hyödyllistä, kun suoritat komentosarjan joko komentorivillä tai erätiedostossa.
Ehdollisen lausekkeen avulla voit määrittää joukon komentoja, joita esiintyy vain, jos edellinen komento onnistui. Voit myös testata vian, suorittaa komentoja vain, jos edellinen komento epäonnistui. Joskus, jos ohjelma tukee sitä, voit myös testata tietyntyyppisiä virheitä.
Voit myös haarata komentojen suorittamisen, niin että eri komentokokonaisuus suoritetaan, jos edellinen komento epäonnistui.
Ehdollinen "jos [ei] virhetaso"
Ehdollinen lauseke " jos virheen taso n " on totta, jos virhetaso on suurempi tai yhtä suuri kuin n .
Samoin " jos ei virhetaso n " on totta, jos virhetaso on pienempi kuin n .
Tarkastellaan joitakin esimerkkejä siitä, miten niitä voidaan käyttää suorittamalla joitakin komentoja Windows-komentorivillä.
Aloita avaamalla komentokehoteikkuna: paina Win + X (pidä Windows-näppäintä painettuna ja paina X ) ja valitse komentokehote .
Suorita nyt yksinkertainen komento:
mkdir mydirectory
Kun suoritetaan mkdir (olettaen, että nykyisessä hakemistossa ei ole jo hakemistoa "mydirectory"), luodaan hakemiston mydirectory . Komento oli onnistunut, joten kun mkdir lopettaa, se asettaa virhetason arvoon 0 .
Testataan virhetasoa 0.
Menestyksen testaus: "jos ei virhetasoa"
Voimme testata virhetason 0 (menestys) ehdollisen lausunnon, jos ei virhetaso 1 . Jos tämä on totta (virhetaso on pienempi kuin 1), ehdollista seuraa seuraava komento. Alla olevissa esimerkeissä käytämme echo- komentoa tulostamaan viestin näytölle.
jos ei errorlevel 1 echo Viimeinen komento onnistui.
Viimeinen komento onnistui.
Kuten on osoitettu, edellä ajettu mkdir- komento onnistui.
Jos yritämme kuitenkin tehdä hakemiston uudelleen, mkdir epäonnistuu, koska hakemiston mydirectory on jo olemassa:
mkdir mydirectory
Alahakemisto tai tiedoston esimerkki on jo olemassa.
Kun mkdir epäonnistuu, se antaa oman virhesanomansa, "Alahakemisto tai tiedostoesimerkki on jo olemassa" ja asettaa virhetason arvoon 1. Jos suoritamme ehdollisen lausuman uudelleen:
jos ei errorlevel 1 echo Viimeinen komento onnistui.
Mitään ei tapahdu. Echo- komento ei toimi, koska testasimme menestystä - errorlevel alle 1 - ja tämä ehto on väärä.
Testausvirhe: "jos virhetaso"
Voimme erityisesti testata epäonnistumisen, jos virhetaso 1, joka palaa totta, jos virhetaso on 1 tai suurempi.
jos virhetaso 1 echo Viimeinen komento epäonnistui.
Viimeinen komento epäonnistui.
Ehto täyttyy (koska mkdir on aiemmin asettanut virhetason 1: ksi) ja kaiun komento toimii. Se toimii myös, jos virhetaso olisi 2, 3, 4 jne. Jos virhetaso oli 0, se ei käynnisty.
Haarautumisen suorittaminen if..else
Yllä olevissa esimerkeissä testasimme onnistumisen tai epäonnistumisen, mutta emme molempia.
Voimme testata sekä onnistumisen että epäonnistumisen käyttämällä lomakkeen if / else-lausuntoa:
jos [ ei ] virhetaso n ( komento1 ) muu ( komento2 )
Huomautus: Sulkut ovat tarpeen komentojen erottamiseksi toisesta sanasta.
Esimerkiksi:
mkdir newtest
jos ei virhetaso 1 (echo Success) muu (echo Failure)
Menestys
mkdir newtest
Alihakemisto tai tiedosto newtest on jo olemassa.
jos ei virhetaso 1 (echo Success) muu (echo Failure)
vika
% ERRORLEVEL% ympäristömuuttuja
Usein virhetaso tallennetaan myös ympäristömuuttujaan % ERRORLEVEL% . Sen arvo on kätevä tapa käyttää nykyistä virhetasoa.
Seuraavassa esimerkissä suoritetaan dir- komento kahdesti, kerran onnistuneesti ja kerran epäonnistuneesti. Jokaisen jälkeen toistamme % ERRORLEVEL%: n arvon .
mkdir-esimerkki
dir esimerkki
C-hakemiston käyttäjät: Hope Toivomme esimerkiksi 06.10.2014 09:43. 20.10.2014 09:43 .. 0 Tiedosto (t) 0 tavua 2 Dir (t) 50, 671, 132, 672 tavua ilmaiseksi
echo% ERRORLEVEL%
0
dir väärin kirjoitettu
C-hakemiston käyttäjät: Hope File Not Found
echo% ERRORLEVEL%
1
% ERRORLEVEL%: n käyttö ehdollisissa tiloissa
Voit käyttää % ERRORLEVEL% -arvoa ehdollistuksissa, esimerkiksi:
jos% ERRORLEVEL% NEQ 0 echo Errorlevel ei ole nolla, viimeinen komento epäonnistui.
Vihje: NEQ on suhteellinen operaattori, joka tarkoittaa "ei ole yhtä suuri".
Huomautus:% ERRORLEVEL% ei ole aina oikea
% ERRORLEVEL% ei ole sama kuin jos virhetaso ei ole, ja kaksi arvoa eivät aina ole samat. Erityisesti % ERRORLEVEL% ei aina päivity, kun virhetaso muuttuu. Lisätietoja on Raymond Chenin MSDN-blogipostissa.
Tästä syystä, jos testaat virhetasoa tuotantoympäristössä, on parempi käyttää, jos [ ei ] virhetaso .
Errorlevel-hakutyökalu
Edistyneille käyttäjille ja ohjelmistokehittäjille Microsoft on julkaissut komentorivin virhetason hakutyökalun, err.exe . Sen avulla voit etsiä virhetasoja numeron tai sisäisen nimen perusteella ja rajoittaa hakua otsikkotiedostosta, jossa virhetaso on määritelty.
err /winerror.h 0
# winerror.h valittu. # varten hex 0x0 / desimaali 0: ERROR_SUCCESS winerror.h # Toiminto suoritettiin onnistuneesti. NO_ERROR winerror.h SEC_E_OK winerror.h S_OK winerror.h # 4 haussa löytyi "0"
err /cmdmsg.h 9009
# cmdmsg.h valittu. # desimaalille 9009 / hex 0x2331: MSG_DIR_BAD_COMMAND_OR_FILE cmdmsg.h # '% 1' ei tunnisteta sisäiseksi tai ulkoiseksi käskyksi, # toiminnalliseksi ohjelmaksi tai erätiedoksi. # 1 ottelusta löytyi kohteelle "9009"
Voit ladata työkalun suoraan Microsoftilta.
Ohjelmointiehdot