Noen ganger er det nyttig å sjekke inn en batchfil hvis den ble startet fra en forhøyet ledetekst eller som administrator. Jeg vil gjerne dele med deg et triks som jeg bruker for å gjøre dette. Hovedideen til trikset mitt er basert på verdien av den spesielle miljøvariabelen% errorlevel% som lagrer utgangskoden for de fleste konsollapper og -kommandoer. La oss se dette i aksjon.
Annonse
Når noen konsollapper fullfører jobben sin riktig, lagrer% errrorlevel% variabelen 0 som sin verdi.
Åpne en ny ledetekstforekomst og kjør 'dir' kommandoen. Deretter skriver du ut% errorlevel% -verdien ved hjelp av 'echo' -kommandoen:
dir ekko% feilnivå%
Det vil gi 0 som utdata.
La oss nå prøve å utføre en kommando som krever høyde, fra et vanlig ikke-forhøyet ledetekstvindu. La oss for eksempel prøve åpne filer kommando som krever administratorrettigheter.
Hvis du skriver ut% errorlevel% -verdien, vil den ikke være 0 fordi kommandoen openfiles ikke viser åpne filer uten administratorrettigheter.
Men hvis du kjører den fra en forhøyet ledetekst ( her er hvordan du åpner en admin cmd-ledetekst ), vil det vise deg åpnede filer og vil returnere 0, som forventet.
Ved hjelp av denne funksjonen er det mulig å implementere en enkel sjekk i batchfilen:
@echo av openfiles> NUL 2> & 1 hvis IKKE% ERRORLEVEL% EQU 0 goto NotAdmin echo Hei fra forhøyet ledetekst goto End: NotAdmin echo Denne ledeteksten er IKKE ELEVATED: End
Merk at jeg bruker omdirigering av utdata for å undertrykke eventuelle utdata fra openfiles-kommandoen. I '> NUL 2> & 1 del' blir standardutgangen for kommandoen omdirigert til ingensteds (NUL), og feilutdataene blir omdirigert til standardutgangen, dvs. til NUL også.
I stedet for openfiles-kommandoen kan du bruke hvilken som helst kommando som krever høyde, for eksempel nettøkt kommando.
Det er det.