Kartais naudinga patikrinti paketinį failą, jei jis buvo paleistas iš pakeltos komandų eilutės arba kaip administratorius. Norėčiau pasidalinti su jumis triuku, kurį naudoju tai atlikdamas. Pagrindinė mano gudrybės idėja pagrįsta specialiojo aplinkos kintamojo% errorlevel%, kuriame saugomas daugumos konsolės programų ir komandų išėjimo kodas, verte. Pažiūrėkime, kaip tai veikia.
Reklama
Kai kuri nors konsolės programa tinkamai baigia savo darbą, kintamasis% errrorlevel% išsaugo 0 kaip savo vertę.
Atidarykite naują komandų eilutės egzempliorių ir paleiskite komandą „dir“. Po to išspausdinkite% errorlevel% reikšmę naudodami komandą 'echo':
dir echo% klaidos lygis%
Išvesties rezultatas bus 0.
Dabar pabandykime atlikti komandą, kuriai reikia pakilimo, iš įprasto nepaaukštinto komandų eilutės lango. Pavyzdžiui, pabandykime atvirosios bylos komanda, kuriai reikalingos administratoriaus teisės.
Jei atspausdinsite% errorlevel% reikšmę, ji nebus 0, nes komanda openfiles nepavyks parodyti atidarytų failų be administratoriaus teisių.
Tačiau jei paleisite ją iš padidintos komandų eilutės ( Štai kaip atidaryti administratoriaus cmd eilutę ), jis parodys atidarytus failus ir grąžins 0, kaip tikėtasi.
Naudojant šią funkciją, paketiniame faile galima atlikti paprastą patikrinimą:
@echo off openfiles> NUL 2> & 1 if NOT% ERRORLEVEL% EQU 0 goto NotAdmin echo Labas iš pakeltos komandų eilutės
Atkreipkite dėmesį, kad aš naudoju išvesties peradresavimą norėdamas užgniaužti bet kokią komandą openfiles išvestį. '> NUL 2> & 1 dalyje' numatytasis komandos išvestis nukreipiama į niekur (NUL), o klaidos išvestis nukreipiama į standartinę išvestį, t. Y. Ir į NUL.
Vietoj komandos openfiles galite naudoti bet kurią komandą, kuriai reikia aukščio, pavyzdžiui, grynasis seansas komandą.
Viskas.