Kas yra klaidų lygis?

„Microsoft Windows“ ir „MS-DOS“ klaidų lygis yra sveiko skaičiaus numeris, kurį vaikas grąžina, kai jis baigiasi.

Klaidų lygis yra 0, jei procesas buvo sėkmingas.

Klaidų lygis yra 1 ar didesnis, jei įvyko klaida.

Bandymų klaidų lygis yra naudingas, kai vykdote komandų seriją arba komandų eilutėje, arba paketiniame faile.

Naudojant sąlyginę išraišką, galite nurodyti komandų seriją, kuri atsiranda tik tuo atveju, jei ankstesnė komanda buvo sėkminga. Taip pat galite išbandyti gedimą, vykdydami komandas tik tuo atveju, jei ankstesnė komanda nepavyko. Kartais, jei programa ją palaiko, galite patikrinti ir tam tikrų tipų klaidas.

Taip pat galite suskirstyti komandų vykdymą, kad būtų vykdomas kitas komandų rinkinys, jei ankstesnė komanda nepavyko.

Sąlyginis "jei [ne] klaidų lygis"

Sąlyginė išraiška " jei klaidų lygis n " yra teisinga, jei klaidų lygis yra didesnis arba lygus n .

Panašiai „ jei ne klaidų lygis n “ yra teisingas, jei klaidų lygis yra mažesnis nei n .

Pažvelkime keletą pavyzdžių, kaip juos galima naudoti, kai kurias komandas paleisite „Windows“ komandinėje eilutėje.

Norėdami pradėti, atidarykite komandų eilutės langą: paspauskite „ Win + X“ (palaikykite nuspaudę „Windows“ klavišą ir paspauskite X ) ir pasirinkite komandų eilutę .

Dabar paleiskime paprastą komandą:

 mkdir mydirectory 

Kai mes paleisime mkdir (darant prielaidą, kad šiuo kataloge dar nėra katalogo „mydirectory“), sukuriamas katalogo „mydirectory“. Komanda buvo sėkminga, todėl, kai baigiasi mkdir, jis nustato klaidų lygį iki 0 .

Tikrinkime 0 pakopos lygį.

Sėkmės testavimas: „jei ne klaidų lygis“

Mes galime patikrinti, ar 0 pakopos lygis (sėkmė) yra sąlyginis pareiškimas, jei ne klaidų lygis 1 . Jei tai tiesa (klaidų lygis yra mažesnis nei 1), bus vykdoma vadovaujantis sąlyga. Toliau pateiktuose pavyzdžiuose naudosime echo komandą, kad išspausdintumėte pranešimą ekrane.

 jei ne klaidų lygis 1 aidas Paskutinė komanda buvo sėkminga. 
 Paskutinė komanda buvo sėkminga. 

Kaip nurodyta, aukščiau esanti komanda mkdir buvo sėkminga.

Tačiau, jei bandysime vėl padaryti katalogą, mkdir nepavyks, nes katalogo „ mydirectory“ jau yra:

 mkdir mydirectory 
 Jau egzistuoja subkatalogas arba failo pavyzdys. 

Kai „ mkdir“ nepavyksta, jis pateikia savo klaidos pranešimą, „jau egzistuoja pakategorė arba failo pavyzdys“ ir nustato klaidų lygį į 1. Jei dar kartą vykdysime sąlyginį pareiškimą:

 jei ne klaidų lygis 1 aidas Paskutinė komanda buvo sėkminga. 

Nieko neįvyksta. Mūsų echo komanda neveikia, nes išbandėme sėkmę - klaidų lygį, mažesnį nei 1 - ir ši sąlyga yra klaidinga.

Bandymo gedimas: „jei klaidų lygis“

Mes galime konkrečiai išbandyti, ar nepavyko, jei 1 pakopos lygis yra teisingas, jei klaidų lygis yra 1 ar didesnis.

 jei 1 lygio echo lygis Paskutinė komanda nepavyko. 
 Paskutinė komanda nepavyko. 

Sąlyga įvykdyta (nes mkdir anksčiau nustatė klaidų lygį iki 1), o aido komanda veikia. Tai taip pat būtų vykdoma, jei klaidų lygis būtų 2, 3, 4 ir tt Jei klaidų lygis buvo 0, jis neveiks.

Filialų vykdymas su if..else

Pirmiau pateiktuose pavyzdžiuose mes patikrinome sėkmę ar nesėkmę, bet ne abu.

Mes galime išbandyti ir sėkmę, ir nesėkmę, naudojant formą „if / other“.

 jei [ ne ] klaidų lygis n ( command1 ) dar kitas ( command2 ) 

Pastaba: skliausteliai reikalingi komandoms atskirti nuo kito žodžio.

Pavyzdžiui:

 mkdir newtest 
 jei ne 1 lygmuo (echo Success), dar (echo Failure) 
 Sėkmė 
 mkdir newtest 
 Subkatalogas arba failas newtest jau yra. 
 jei ne 1 lygmuo (echo Success), dar (echo Failure) 
 Nesėkmė 

% ERRORLEVEL% aplinkos kintamasis

Dažnai klaidų lygis taip pat saugomas aplinkos kintamajame % ERRORLEVEL% . Jo vertė yra patogus būdas pasiekti esamą klaidų lygį.

Toliau pateiktame pavyzdyje du kartus, vieną kartą sėkmingai, ir vieną kartą nesėkmingai vykdome dir komandą. Po kiekvieno mes atkartojame % ERRORLEVEL% vertę.

 mkdir pavyzdys 
 rež pavyzdys 
 C katalogo vartotojai: viltis, pavyzdžiui, 06/10/2018 09:43 PM. 2012/01/10 09:43 .. 0 Failas (-ai) 0 baitų 2 Dir (s) 50, 671, 132, 772 baitų nemokamai 
 echo% ERRORLEVEL% 
 0 
 rež klaidingai 
 C katalogas: Vartotojai Tikimės failas nerastas 
 echo% ERRORLEVEL% 
 1 

Naudojant% ERRORLEVEL% sąlygose

% ERRORLEVEL% galite naudoti sąlygose, pavyzdžiui:

 jei% ERRORLEVEL% NEQ 0 echo Errorlevel nėra lygus nuliui, paskutinė komanda nepavyko. 

Patarimas: NEQ yra reliacinis operatorius, kuris reiškia „ne lygus“.

Pastaba:% ERRORLEVEL% ne visada teisinga

% ERRORLEVEL% yra ne tas pats, kaip klaida, o dvi reikšmės ne visada yra tos pačios. Konkrečiai, % ERRORLEVEL% ne visada atnaujinama, kai pasikeičia klaidų lygis. Norėdami gauti daugiau informacijos, žr. Raymond Chen šį MSDN dienoraščio įrašą.

Dėl šios priežasties, jei bandote klaidų lygį gamybos aplinkoje, geriau naudoti, jei nėra klaidų lygio .

Klaidų lygio paieškos įrankis

Pažangiems naudotojams ir programinės įrangos kūrėjams „Microsoft“ išleido komandinės eilutės klaidų lygio paieškos įrankį „ err.exe“ . Tai leidžia ieškoti klaidų lygių pagal skaičių arba vidinį pavadinimą ir apriboti paiešką pagal antraštės failą, kuriame yra nustatytas klaidų lygis.

 err /winerror.h 0 
 # winerror.h pasirinktas. # for hex 0x0 / dešimtainis 0: ERROR_SUCCESS winerror.h # Operacija sėkmingai baigta. NO_ERROR winerror.h SEC_E_OK winerror.h S_OK winerror.h # 4 atitikimas rastas „0“ 
 err /cmdmsg.h 9009 
 # cmdmsg.h pasirinkta. # dešimtainiam 9009 / hex 0x2331: MSG_DIR_BAD_COMMAND_OR_FILE cmdmsg.h # '% 1' neatpažįstama kaip vidinė arba išorinė komanda, # operacinė programa arba paketinis failas. # 1 atitikimo rezultatai rasti „9009“ 

Įrankį galite atsisiųsti tiesiogiai iš „Microsoft“.

Programavimo sąlygos