Minsan kapaki-pakinabang upang suriin sa isang file ng batch kung nagsimula ito mula sa isang nakataas na prompt ng utos o bilang isang administrator. Nais kong ibahagi sa iyo ang isang trick na ginagamit ko upang magawa ito. Ang pangunahing ideya ng aking trick ay batay sa halaga ng espesyal na variable ng kapaligiran% errorlevel% na nag-iimbak ng exit code para sa karamihan ng mga console app at utos. Tingnan natin ito sa pagkilos.
Anunsyo
Kapag natapos ng ilang console app ang trabaho nito nang maayos, ang% errrorlevel% variable ay nag-iimbak ng 0 bilang halaga nito.
Magbukas ng isang bagong halimbawa ng prompt ng utos at patakbuhin ang 'dir' na utos. Pagkatapos nito, i-print ang% errorlevel% na halaga gamit ang 'echo' na utos:
dir echo% errorlevel%
Gagawa ito ng 0 bilang output.
Ngayon, subukan nating magpatupad ng isang utos na nangangailangan ng pag-angat, mula sa isang regular na hindi mataas na window ng command prompt. Halimbawa, subukan natin ang mga openfile utos na nangangailangan ng mga karapatan sa admin.
Kung nai-print mo ang halagang% errorlevel%, hindi ito magiging 0 sapagkat mabibigo ang utos ng openfiles na ipakita ang mga bukas na file nang walang mga karapatang pang-administrator.
Gayunpaman, kung patakbuhin mo ito mula sa isang nakataas na prompt ng utos ( narito kung paano buksan ang isang admin cmd prompt ), ipapakita nito sa iyo ang mga nakabukas na file at ibabalik ang 0, tulad ng inaasahan.
Gamit ang tampok na ito, posible na magpatupad ng isang simpleng pag-check sa batch file:
@echo off openfiles> NUL 2> & 1 kung HINDI% ERRORLEVEL% EQU 0 goto NotAdmin echo Kamusta mula sa mataas na command prompt goto End: NotAdmin echo Ang prompt ng utos na ito ay HINDI NALANG: Tapos
Tandaan na gumagamit ako ng pag-redirect ng output upang sugpuin ang anumang output mula sa openfiles command. Sa bahagi ng '> NUL 2> & 1', ang default na output ng utos ay nai-redirect sa kahit saan (NUL), at ang output ng error ay nai-redirect sa karaniwang output, ibig sabihin, sa NUL din.
Sa halip na ang openfiles command, maaari kang gumamit ng anumang utos na nangangailangan ng taas, halimbawa, ang net session utos
Ayan yun.