Bazen, bir toplu iş dosyasının yükseltilmiş bir komut isteminden mi yoksa bir yönetici olarak mı başlatıldığını kontrol etmek yararlıdır. Bunu yapmak için kullandığım bir numarayı sizinle paylaşmak istiyorum. Numaramın ana fikri, çoğu konsol uygulaması ve komutu için çıkış kodunu depolayan özel ortam değişkeni% errorlevel% değerine dayanıyor. Bunu eylemde görelim.
Reklam
Bazı konsol uygulamaları işini düzgün bir şekilde bitirdiğinde,% errrorlevel% değişkeni, değeri olarak 0'ı depolar.
Yeni bir komut istemi örneği açın ve 'dir' komutunu çalıştırın. Bundan sonra, 'echo' komutunu kullanarak% errorlevel% değerini yazdırın:
dir echo% errorlevel%
Çıktı olarak 0 üretecektir.
Şimdi, yükseltilmemiş bir komut istemi penceresinden yükseltme gerektiren bir komutu çalıştırmayı deneyelim. Örneğin, deneyelim dosyaları aç yönetici hakları gerektiren komut.
% Errorlevel% değerini yazdırırsanız, openfiles komutu yönetici hakları olmadan açık dosyaları gösteremeyeceği için 0 olmaz.
Ancak, yükseltilmiş bir komut isteminden çalıştırırsanız ( burada bir yönetici cmd isteminin nasıl açılacağı ), size açılmış dosyaları gösterecek ve beklendiği gibi 0 döndürecektir.
Bu özelliği kullanarak, toplu iş dosyasında basit bir kontrol uygulamak mümkündür:
@echo offfiles> NUL 2> & 1 DEĞİLSE% ERRORLEVEL% EQU 0 goto NotAdmin echo Yükseltilmiş komut isteminden merhaba goto Son: NotAdmin echo Bu komut istemi YÜKSELTİLMEMİŞTİR: End
Openfiles komutundan herhangi bir çıktıyı bastırmak için çıktı yeniden yönlendirme kullandığımı unutmayın. '> NUL 2> & 1 bölümünde', komutun varsayılan çıktısı hiçbir yere (NUL) yeniden yönlendirilir ve hata çıktısı standart çıktıya, yani NUL'a da yönlendirilir.
Openfiles komutu yerine, yükseltme gerektiren herhangi bir komutu kullanabilirsiniz, örneğin, net oturum komut.
Bu kadar.