Soms is het handig om een batchbestand in te checken als het is gestart vanaf een verhoogde opdrachtprompt of als beheerder. Ik zou graag een truc met je willen delen die ik hiervoor gebruik. Het belangrijkste idee van mijn truc is gebaseerd op de waarde van de speciale omgevingsvariabele% errorlevel% die de afsluitcode opslaat voor de meeste console-apps en -opdrachten. Laten we dit in actie zien.
Advertentie
Wanneer een console-app zijn werk correct voltooit, slaat de variabele% errrorlevel% 0 op als zijn waarde.
Open een nieuw exemplaar van de opdrachtprompt en voer het 'dir'-commando uit. Druk daarna de% errorlevel% -waarde af met de opdracht 'echo':
dir echo% errorlevel%
Het zal 0 produceren als de uitvoer.
Laten we nu proberen een commando uit te voeren dat een verhoging vereist, vanuit een normaal niet-verhoogd opdrachtpromptvenster. Laten we bijvoorbeeld de open bestanden commando waarvoor beheerdersrechten vereist zijn.
Als u de waarde% errorlevel% afdrukt, zal deze niet 0 zijn omdat de opdracht openfiles geen geopende bestanden zonder beheerdersrechten kan weergeven.
Als u het echter uitvoert vanaf een opdrachtprompt met verhoogde bevoegdheid ( hier is hoe u een admin cmd-prompt opent ), toont het je geopende bestanden en retourneert 0, zoals verwacht.
Met deze functie is het mogelijk om een eenvoudige controle in het batchbestand te implementeren:
@echo off openfiles> NUL 2> & 1 if NOT% ERRORLEVEL% EQU 0 ga naar NotAdmin echo Hallo vanaf verhoogde opdrachtprompt ga naar End: NotAdmin echo Deze opdrachtprompt is NIET VERWIJDERD: End
Merk op dat ik uitvoeromleiding gebruik om uitvoer van de opdracht openfiles te onderdrukken. In het '> NUL 2> & 1 part' wordt de standaarduitvoer van het commando omgeleid naar nergens (NUL), en de foutuitvoer wordt omgeleid naar de standaarduitvoer, dus ook naar NUL.
In plaats van het openfiles-commando kunt u elk commando gebruiken dat een verhoging vereist, bijvoorbeeld het netto sessie opdracht.
Dat is het.