Joskus on hyödyllistä tarkistaa erätiedosto, jos se on aloitettu kohotetusta komentokehotteesta vai järjestelmänvalvojana. Haluaisin jakaa kanssasi temppun, jota käytän tekemään tämän. Temppuni pääidea perustuu erityisen ympäristömuuttujan% errorlevel% arvoon, joka tallentaa poistumiskoodin useimmille konsolisovelluksille ja -komennoille. Katsotaanpa tämä toiminnassa.
Mainonta
Kun jokin konsolisovellus viimeistelee työnsä oikein, muuttuja% errrorlevel% tallentaa arvon 0.
Avaa uusi komentokehotteinen ilmentymä ja suorita 'dir' -komento. Tämän jälkeen tulosta% errorlevel% -arvo 'echo' -komennolla:
dir kaiku% virhetaso%
Se tuottaa arvon 0.
Yritetään nyt suorittaa komento, joka vaatii korkeuden tavallisesta ei-korotetusta komentokehoteikkunasta. Kokeillaan esimerkiksi avoimet tiedostot komento, joka vaatii järjestelmänvalvojan oikeudet.
Jos tulostat% errorlevel% -arvon, se ei ole 0, koska openfiles-komento ei näytä avattuja tiedostoja ilman järjestelmänvalvojan oikeuksia.
Jos kuitenkin suoritat sen korotetusta komentokehotteesta ( Näin avataan järjestelmänvalvojan cmd-kehote ), se näyttää avatut tiedostot ja palauttaa arvon 0 odotetusti.
Tämän ominaisuuden avulla on mahdollista toteuttaa yksinkertainen tarkistus erätiedostossa:
@echo off openfiles> NUL 2> & 1 jos EI% ERRORLEVEL% EQU 0 goto NotAdmin echo Hei korotetusta komentokehotteesta goto End: NotAdmin echo Tätä komentokehotetta EI KOROSTA: End
Huomaa, että käytän lähdön uudelleenohjausta estämään kaikki openfiles-komennon lähdöt. '> NUL 2> & 1-osassa' komennon oletuslähtö ohjataan mihinkään (NUL), ja virhelähtö ohjataan normaalilähtöön, ts. Myös NUL: iin.
Openfiles-komennon sijaan voit käyttää mitä tahansa komentoa, joka vaatii korkeutta, esimerkiksi verkkoistunto komento.
Se siitä.