Mikä on virhetaso?

Microsoft Windowsissa ja MS-DOSissa virhetaso on lapsen prosessin palauttama kokonaisluku, kun se päättyy.

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