Μερικές φορές είναι χρήσιμο να ελέγχετε σε ένα αρχείο δέσμης εάν ξεκίνησε από μια γραμμή εντολών με αναβαθμισμένα δικαιώματα ή ως διαχειριστής. Θα ήθελα να μοιραστώ μαζί σας ένα τέχνασμα που χρησιμοποιώ για να το κάνω αυτό. Η κύρια ιδέα του κόλπου μου βασίζεται στην τιμή της ειδικής μεταβλητής περιβάλλοντος% errorlevel% που αποθηκεύει τον κωδικό εξόδου για τις περισσότερες εφαρμογές και εντολές κονσόλας. Ας το δούμε σε δράση.
Διαφήμιση
Όταν κάποια εφαρμογή κονσόλας ολοκληρώνει τη δουλειά της σωστά, η μεταβλητή% errrorlevel% αποθηκεύει το 0 ως τιμή.
Ανοίξτε μια νέα παρουσία γραμμής εντολών και εκτελέστε την εντολή «dir». Μετά από αυτό, εκτυπώστε την τιμή% errorlevel% χρησιμοποιώντας την εντολή «echo»:
dir echo% errorlevel%
Θα παράγει 0 ως έξοδο.
Τώρα, ας προσπαθήσουμε να εκτελέσουμε μια εντολή που απαιτεί ανύψωση, από ένα κανονικό παράθυρο χωρίς γραμμή εντολών. Για παράδειγμα, ας δοκιμάσουμε το ανοιχτά αρχεία εντολή που απαιτεί δικαιώματα διαχειριστή.
Εάν εκτυπώσετε την τιμή% errorlevel%, δεν θα είναι 0 επειδή η εντολή openfiles θα αποτύχει να εμφανίσει τα ανοιχτά αρχεία χωρίς δικαιώματα διαχειριστή.
Ωστόσο, εάν το εκτελέσετε από μια γραμμή εντολών με αναβαθμισμένα δικαιώματα ( Εδώ είναι πώς να ανοίξετε μια προτροπή cmd διαχειριστή ), θα σας δείξει τα ανοιγμένα αρχεία και θα επιστρέψει 0, όπως αναμενόταν.
Χρησιμοποιώντας αυτήν τη δυνατότητα, μπορείτε να εφαρμόσετε έναν απλό έλεγχο στο αρχείο δέσμης:
@echo off openfiles> NUL 2> & 1 αν ΔΕΝ% ERRORLEVEL% EQU 0 goto NotAdmin echo Γεια σας από την ανυψωμένη γραμμή εντολών goto End: NotAdmin echo Αυτή η γραμμή εντολών ΔΕΝ ΑΦΑΙΡΕΤΑΙ: Τέλος
Σημειώστε ότι χρησιμοποιώ ανακατεύθυνση εξόδου για να αποκρύψω οποιαδήποτε έξοδο από την εντολή openfiles. Στο '> NUL 2> & 1 μέρος', η προεπιλεγμένη έξοδος της εντολής ανακατευθύνεται στο πουθενά (NUL) και η έξοδος σφάλματος ανακατευθύνεται στην τυπική έξοδο, δηλαδή και στο NUL.
Αντί για την εντολή openfiles, μπορείτε να χρησιμοποιήσετε οποιαδήποτε εντολή που απαιτεί ανύψωση, για παράδειγμα, το καθαρή συνεδρία εντολή.
Αυτό είναι.