Dažreiz ir lietderīgi pārbaudīt pakešfailu, ja tas tika sākts no paaugstinātas komandrindas vai kā administrators. Es vēlos dalīties ar jums trikā, kuru izmantoju, lai to izdarītu. Mana trika galvenā ideja ir balstīta uz īpašā vides mainīgā% errorlevel% vērtību, kurā tiek saglabāts izejas kods lielākajai daļai konsoles lietotņu un komandu. Apskatīsim to darbībā.
Reklāma
Kad kāda konsoles lietotne pabeidz darbu, mainīgais% errrorlevel% kā vērtību saglabā 0.
Atveriet jaunu komandrindas instanci un palaidiet komandu “dir”. Pēc tam izdrukājiet vērtību% errorlevel%, izmantojot komandu 'echo':
dir echo% errorlevel%
Tas ražos 0 kā izvadi.
Tagad mēģināsim izpildīt komandu, kurai nepieciešams paaugstinājums, no parastā komandrindas loga, kas nav paaugstināts. Piemēram, izmēģināsim atvērtie faili komanda, kurai nepieciešamas administratora tiesības.
Ja drukājat vērtību% errorlevel%, tā nebūs 0, jo komandā openfiles neizdosies parādīt atvērtos failus bez administratora tiesībām.
Tomēr, ja to palaižat no paaugstinātas komandrindas ( Lūk, kā atvērt administratora cmd uzvedni ), tas parādīs atvērtos failus un atgriezīs 0, kā paredzēts.
Izmantojot šo funkciju, pakešdatnē ir iespējams veikt vienkāršu pārbaudi:
@echo off openfiles> NUL 2> & 1, ja NAV% ERRORLEVEL% EQU 0 goto NotAdmin atbalss Sveiki no paaugstinātas komandrindas goto Beigas: NotAdmin atbalss Šī komandu uzvedne NAV PALIELOTA: Beigas
Ņemiet vērā, ka es izmantoju izejas novirzīšanu, lai nomāktu jebkuru izeju no komandas openfiles. '> NUL 2> & 1 daļā' komandas noklusējuma izvade tiek novirzīta uz nekurieni (NUL), un kļūdas izeja tiek novirzīta uz standarta izvadi, t.i., arī uz NUL.
Komandas openfiles vietā varat izmantot jebkuru komandu, kurai nepieciešams paaugstinājums, piemēram, net sesija komandu.
Tieši tā.