Toplu Komut Dosyası - Dönüş Kodu
Varsayılan olarak, bir komut satırı yürütmesi tamamlandığında, yürütme başarılı olduğunda sıfır veya yürütme başarısız olduğunda sıfırdan dönmelidir. Bir toplu komut dosyası yürütme başarısız olduktan sonra sıfır olmayan bir değer döndürdüğünde, sıfır olmayan değer hata numarasının ne olduğunu gösterecektir. Daha sonra, hatanın neyle ilgili olduğunu belirlemek ve uygun şekilde çözmek için hata numarasını kullanacağız.
Yaygın çıkış kodu ve açıklamaları aşağıdadır.
Hata kodu | Açıklama |
---|---|
0 | Program başarıyla tamamlandı. |
1 | Yanlış işlev. Eylem'in Windows komut isteminde cmd.exe'de tanınmayan komutu yürütmeye çalıştığını gösterir. |
2 | Sistem belirtilen dosyayı bulamıyor. Dosyanın belirtilen konumda bulunamadığını gösterir. |
3 | Sistem belirtilen yolu bulamıyor. Belirtilen yolun bulunamadığını gösterir. |
5 | Giriş reddedildi. Kullanıcının belirtilen kaynağa erişim hakkına sahip olmadığını gösterir. |
9009 0x2331 |
Program dahili veya harici bir komut, çalıştırılabilir program veya toplu iş dosyası olarak tanınmıyor. Eylemi yapılandırırken komutun, uygulama adının veya yolun yanlış yazıldığını gösterir. |
221225495 0xC0000017 -1073741801 |
Yeterli sanal bellek yok. Windows'un belleğinin tükendiğini gösterir. |
3221225786 0xC000013A -1073741510 |
Uygulama, CTRL + C sonucunda sonlandırıldı. Uygulamanın, kullanıcının klavye girişi CTRL + C veya CTRL + Break veya kapama komut istemi penceresi tarafından sonlandırıldığını gösterir. |
3221225794 0xC0000142 -1073741502 |
Uygulama düzgün olarak başlatılamadı. Uygulamanın, mevcut kullanıcının erişim hakkına sahip olmadığı bir Masaüstünde başlatıldığını gösterir. Diğer bir olası neden, gdi32.dll veya user32.dll'nin başlatılamamasıdır. |
Hata Düzeyi
Çevre değişkeni% ERRORLEVEL%, son çalıştırılan programın veya komut dosyasının dönüş kodunu içerir.
Varsayılan olarak, ERRORLEVEL'i kontrol etmenin yolu aşağıdaki kod yoluyladır.
Sözdizimi
IF %ERRORLEVEL% NEQ 0 (
DO_Something
)
Toplu iş dosyasından hata kodlarını döndürmek için toplu iş dosyasının sonunda EXIT / B% ERRORLEVEL% komutunun kullanılması yaygındır.
Toplu iş dosyasının sonundaki ÇIKIŞ / B, bir toplu iş dosyasının yürütülmesini durduracaktır.
Özel dönüş kodlarını döndürmek için toplu iş dosyasının sonundaki EXIT / B <exitcodes> öğesini kullanın.
Ortam değişkeni% ERRORLEVEL%, yürütülen son komuttan en son hata kodları olan toplu iş dosyasındaki en son hata düzeyini içerir. Toplu iş dosyasında, aynı değişken farklı bilgisayarlarda farklı değerlere genişletildiğinden, sabit değerler yerine ortam değişkenlerini kullanmak her zaman iyi bir uygulamadır.
Bir toplu iş dosyasından hata kodlarının nasıl kontrol edileceğine dair hızlı bir örneğe bakalım.
Misal
Aşağıdaki koda sahip Find.cmd adında bir toplu iş dosyamız olduğunu varsayalım. Kodda, lists.txt adlı dosyayı bulamazsak hata düzeyini 7'ye ayarlamamız gerektiğini açıkça belirtmiştik. Benzer şekilde, userprofile değişkeninin tanımlı olmadığını görürsek, hata düzeyi kodunu şu şekilde ayarlamamız gerektiğini belirtmiştik. 9.
if not exist c:\lists.txt exit 7
if not defined userprofile exit 9
exit 0
Önce Find.cmd'yi çağıran App.cmd adında başka bir dosyamız olduğunu varsayalım. Şimdi, Find.cmd hata düzeyini 0'dan büyük ayarladığı bir hata döndürürse, programdan çıkar. Aşağıdaki toplu iş dosyasında Find.cnd find çağrıldıktan sonra, aslında hata düzeyinin 0'dan büyük olup olmadığını kontrol eder.
Call Find.cmd
if errorlevel gtr 0 exit
echo “Successful completion”
Çıktı
Yukarıdaki programda çıktı olarak aşağıdaki senaryolara sahip olabiliriz -
C: \ lists.txt dosyası yoksa, konsol çıktısında hiçbir şey görüntülenmez.
Userprofile değişkeni yoksa, konsol çıktısında hiçbir şey görüntülenmez.
Yukarıdaki koşulların her ikisi de geçerse, komut isteminde "Başarılı tamamlanma" dizisi görüntülenir.
Döngüler
Karar verme bölümünde, birbiri ardına sıralı olarak gerçekleştirilen ifadeler gördük. Ek olarak, bir programın mantığındaki kontrol akışını değiştirmek için Batch Script'te uygulamalar da yapılabilir. Daha sonra kontrol ifadeleri akışı olarak sınıflandırılırlar.
S.No | Döngüler ve Açıklama |
---|---|
1 | İfade Uygulaması sırasında
Batch Script'te doğrudan while ifadesi yoktur, ancak bu döngünün uygulamasını if ifadesini ve etiketleri kullanarak çok kolay bir şekilde yapabiliriz. |
2 | İfade için - Uygulamaları Listele
"FOR" yapısı, toplu iş dosyaları için döngü yetenekleri sunar. Aşağıda, bir değerler listesiyle çalışmak için 'for' ifadesinin ortak yapısı verilmiştir. |
3 | Aralıklar arasında döngü
'For' ifadesi aynı zamanda bir dizi değer arasında hareket etme yeteneğine de sahiptir. İfadenin genel şekli aşağıdadır. |
4 | Döngü Uygulaması için Klasik
Çoğu programlama dilinde mevcut olan klasik 'for' ifadesi aşağıdadır. |
Komut Satırı Bağımsız Değişkenlerinde Döngü
'For' ifadesi, komut satırı bağımsız değişkenlerini kontrol etmek için de kullanılabilir. Aşağıdaki örnek, 'for' ifadesinin komut satırı argümanları arasında döngü yapmak için nasıl kullanılabileceğini gösterir.
Misal
@ECHO OFF
:Loop
IF "%1"=="" GOTO completed
FOR %%F IN (%1) DO echo %%F
SHIFT
GOTO Loop
:completed
Çıktı
Yukarıdaki kodumuzun Test.bat adlı bir dosyada depolandığını varsayalım. Toplu iş dosyası 1,2 ve 3 komut satırı argümanlarını Test.bat 1 2 3 olarak geçerse yukarıdaki komut aşağıdaki çıktıyı üretecektir.
1
2
3
S.No | Döngüler ve Açıklama |
---|---|
1 | Break İfadesi Uygulaması
Break deyimi, herhangi bir programlama dilindeki döngülerin içindeki kontrol akışını değiştirmek için kullanılır. Break deyimi normalde döngü yapılarında kullanılır ve en içteki çevreleyen döngünün hemen sonlandırılmasına neden olmak için kullanılır. |