Toplu Komut Dosyası - Hızlı Kılavuz

Batch Script, doğası gereği tekrarlayan komut dizilerini otomatikleştirmek için dahil edilmiştir. Komut dosyası oluşturma, kişinin kabuktaki hayatını daha kolay ve daha üretken hale getirmek için bu komut dizilerini otomatikleştirerek bu gereksinimi ortadan kaldırmanın bir yoludur. Çoğu kuruluşta, Batch Script, işleri otomatikleştirmek için bir şekilde veya başka şekilde dahil edilmiştir.

Batch Script'in bazı özellikleri şunlardır:

  • Daha fazla işlenebilmesi için kullanıcılardan gelen girdileri okuyabilir.

  • Daha iyi otomatikleştirme ve komut dosyası oluşturma için, if, while, anahtar gibi denetim yapılarına sahiptir.

  • İşlevler ve Diziler gibi gelişmiş özellikleri destekler.

  • Normal ifadeleri destekler.

  • Perl gibi diğer programlama kodlarını içerebilir.

Toplu İş Komut Dosyasının yaygın kullanımlarından bazıları şunlardır:

  • Sunucuları farklı amaçlar için kurma.

  • İstenmeyen dosyaları veya günlük dosyalarını silmek gibi temizlik faaliyetlerini otomatikleştirme.

  • Uygulamaların bir ortamdan diğerine dağıtımını otomatikleştirme.

  • Programları aynı anda çeşitli makinelere yükleme.

Toplu komut dosyaları, birbiri ardına sırayla yürütülen komutların bulunduğu satırları içeren basit metin dosyalarında saklanır. Bu dosyalar özel BAT veya CMD uzantısına sahiptir. Bu tür dosyalar, komut yorumlayıcısı olarak adlandırılan bir sistem dosyası tarafından sağlanan bir arabirim (bazen bir kabuk olarak adlandırılır) aracılığıyla tanınır ve yürütülür. Windows sistemlerinde bu yorumlayıcı cmd.exe olarak bilinir.

Bir toplu iş dosyasını çalıştırmak, üzerine tıklamak kadar basittir. Toplu iş dosyaları ayrıca bir komut isteminde veya Başlat-Çalıştır satırında da çalıştırılabilir. Böyle bir durumda, dosyanın yolu yol ortamında olmadığı sürece tam yol adı kullanılmalıdır. Aşağıda, Toplu İş Komut Dosyasının basit bir örneği verilmiştir. Bu Toplu Komut Dosyası çalıştırıldığında geçerli dizindeki tüm dosyaları siler.

:: Deletes All files in the Current Directory With Prompts and Warnings
::(Hidden, System, and Read-Only Files are Not Affected)
:: @ECHO OFF
DEL . DR

Bu bölüm, Toplu Komut Dosyası ile ilgili ortamı açıklar.

Yazma ve Yürütme

Tipik olarak, bir toplu iş dosyası oluşturmak için not defteri kullanılır. Bu, toplu iş dosyalarının oluşturulması için en basit araçtır. Sonraki, toplu komut dosyaları için yürütme ortamıdır. Windows sistemlerinde bu, komut istemi veya cmd.exe aracılığıyla yapılır. Tüm toplu iş dosyaları bu ortamda çalıştırılır.

Aşağıdakiler cmd.exe'yi başlatmanın farklı yollarıdır -

Method 1 - C: \ Windows \ System32 konumuna gidin ve cmd dosyasına çift tıklayın.

Method 2 - Çalıştır komutu aracılığıyla - Aşağıdaki anlık görüntü, Windows server 2012'de komut istemini (cmd.exe) bulmayı gösterir.

Cmd.exe başlatıldığında, aşağıdaki ekranla karşılaşacaksınız. Bu, toplu komut dosyalarınızı yürütmek için ortamınız olacaktır.

Ortam Değişkenleri

Toplu iş dosyalarını komut isteminden çalıştırmak için, toplu iş dosyasının depolandığı konuma gitmeniz gerekir veya alternatif olarak yol ortam değişkenine dosya konumunu girebilirsiniz. Bu nedenle, toplu iş dosyasının konumda depolandığını varsayarsak C:\Application\bin, PATH değişkeninin dahil edilmesi için bu talimatları izlemeniz gerekir.

işletim sistemi Çıktı
pencereler Dizeyi Ekle; C:\Application\binPATH sistem değişkeninin sonuna kadar.

Bu bölümde, sık kullanılan bazı toplu komutlara bakacağız.

S.No Komutlar ve Açıklama
1 VER

Bu toplu iş komutu, kullandığınız MS-DOS sürümünü gösterir.

2 ASSOC

Bu, bir uzantıyı bir dosya türüyle (FTYPE) ilişkilendiren, mevcut ilişkileri görüntüleyen veya bir ilişkilendirmeyi silen bir toplu komuttur.

3 CD

Bu toplu iş komutu, farklı bir dizinde değişiklik yapmaya yardımcı olur veya geçerli dizini görüntüler.

4 CLS

Bu toplu iş komutu ekranı temizler.

5 KOPYALAMA

Bu toplu iş komutu, dosyaları bir konumdan diğerine kopyalamak için kullanılır.

6 DEL

Bu toplu iş komutu, dizinleri değil dosyaları siler.

7 DIR

Bu toplu iş komutu, bir dizinin içeriğini listeler.

8 TARİH

Bu toplu iş komutu, sistem tarihini bulmaya yardımcı olur.

9 EKO

Bu toplu iş komutu mesajları görüntüler veya komut yankılamasını açar veya kapatır.

10 ÇIKIŞ

Bu toplu iş komutu DOS konsolundan çıkar.

11 MD

Bu toplu iş komutu, geçerli konumda yeni bir dizin oluşturur.

12 HAREKET

Bu toplu iş komutu, dosyaları veya dizinleri dizinler arasında taşır.

13 PATH

Bu toplu iş komutu, yol değişkenini görüntüler veya ayarlar.

14 DURAKLAT

Bu toplu iş komutu, kullanıcıyı uyarır ve bir girdi satırı girilmesini bekler.

15 KOMUT İSTEMİ

Bu toplu iş komutu, cmd.exe istemini değiştirmek veya sıfırlamak için kullanılabilir.

16 RD

Bu toplu iş komutu dizinleri kaldırır, ancak kaldırılmadan önce dizinlerin boş olması gerekir.

17 REN

Dosyaları ve dizinleri yeniden adlandırır

18 REM

Bu toplu iş komutu, toplu iş dosyalarındaki açıklamalar için kullanılır ve açıklamanın içeriğinin yürütülmesini engeller.

19 BAŞLAT

Bu toplu iş komutu bir programı yeni pencerede başlatır veya bir belgeyi açar.

20 ZAMAN

Bu toplu iş komutu saati ayarlar veya görüntüler.

21 TÜR

Bu toplu iş komutu, bir dosyanın veya dosyaların içeriğini çıktıya yazdırır.

22 VOL

Bu toplu iş komutu, birim etiketlerini görüntüler.

23 ATTRIB

Curret dizinindeki dosyaların özniteliklerini görüntüler veya ayarlar

24 CHKDSK

Bu toplu iş komutu, diskte herhangi bir sorun olup olmadığını kontrol eder.

25 TERCİH

Bu toplu komut, kullanıcıya bir seçenek listesi sağlar.

26 CMD

Bu toplu komut, başka bir komut istemi örneğini çağırır.

27 COMP

Bu toplu iş komutu, 2 dosyayı dosya boyutuna göre karşılaştırır.

28 DÖNÜŞTÜRMEK

Bu toplu iş komutu, bir birimi FAT16 veya FAT32 dosya sisteminden NTFS dosya sistemine dönüştürür.

29 SÜRÜCÜ SORGULAMA

Bu toplu iş komutu, yüklü tüm aygıt sürücülerini ve özelliklerini gösterir.

30 GENİŞLET

Bu toplu iş komutu, sıkıştırılmış .cab dolap dosyalarından dosyaları ayıklar.

31 BUL

Bu toplu iş komutu, dosyalarda veya girdide bir dizeyi arar ve eşleşen satırları çıkarır.

32 BİÇİM

Bu toplu iş komutu, FAT, FAT32 veya NTFS gibi Windows destekli dosya sistemini kullanmak için bir diski biçimlendirir ve böylece diskin önceki içeriğinin üzerine yazar.

33 YARDIM

Bu toplu iş komutu, Windows tarafından sağlanan komutların listesini gösterir.

34 IPCONFIG

Bu toplu iş komutu, Windows IP Yapılandırmasını görüntüler. Bağlantıya göre yapılandırmayı ve bu bağlantının adını gösterir.

35 ETİKET

Bu toplu iş komutu, bir disk etiketi ekler, ayarlar veya kaldırır.

36 DAHA

Bu toplu iş komutu, her seferinde bir ekran olmak üzere bir dosyanın veya dosyaların içeriğini görüntüler.

37

Kullanılan komuta bağlı olarak çeşitli ağ hizmetleri sağlar.

38 PING

Bu toplu iş komutu, ICMP / IP "echo" paketlerini ağ üzerinden belirlenen adrese gönderir.

39 KAPAT

Bu toplu iş komutu bir bilgisayarı kapatır veya geçerli kullanıcının oturumunu kapatır.

40 ÇEŞİT

Bu toplu iş komutu, girdiyi bir kaynak dosyadan alır ve içeriğini alfabetik olarak A'dan Z'ye veya Z'den A'ya sıralar. Çıkışı konsolda yazdırır.

41 SUBST

Bu toplu iş komutu, yerel bir klasöre bir sürücü harfi atar, mevcut atamaları görüntüler veya bir atamayı kaldırır.

42 SİSTEM BİLGİSİ

Bu toplu komut, bir bilgisayarın ve işletim sisteminin yapılandırmasını gösterir.

43 TASKKILL

Bu toplu iş komutu, bir veya daha fazla görevi sonlandırır.

44 GÖREV LİSTESİ

Bu toplu komut, görev adı ve işlem kimliği (PID) dahil olmak üzere görevleri listeler.

45 XCOPY

Bu toplu iş komutu, dosyaları ve dizinleri daha gelişmiş bir şekilde kopyalar.

46 Ağaç

Bu toplu iş komutu, herhangi bir özyineleme veya derinlik düzeyine kadar geçerli dizinin tüm alt dizinlerinin bir ağacını görüntüler.

47 FC

Bu toplu iş komutu, iki dosya arasındaki gerçek farkları listeler.

48 DİSKPART

Bu toplu iş komutu, disk bölümlerinin özelliklerini gösterir ve yapılandırır.

49 BAŞLIK

Bu toplu iş komutu, konsol penceresinde görüntülenen başlığı ayarlar.

50 AYARLAMAK

Mevcut sistemdeki ortam değişkenlerinin listesini görüntüler.

Bu bölümde, toplu iş dosyalarının nasıl oluşturulacağını, kaydedileceğini, çalıştırılacağını ve değiştirileceğini öğreneceğiz.

Toplu İş Dosyaları Oluşturma

Toplu iş dosyaları normalde not defterinde oluşturulur. Bu nedenle en basit yol, not defterini açmak ve komut dosyası için gerekli komutları girmektir. Bu alıştırma için not defterini açın ve aşağıdaki ifadeleri girin.

:: Deletes All files in the Current Directory With Prompts and Warnings 
::(Hidden, System, and Read-Only Files are Not Affected) 
:: 
@ECHO OFF 
DEL . 
DR

Toplu İş Dosyalarını Kaydetme

Toplu iş dosyanız oluşturulduktan sonra, sonraki adım toplu iş dosyanızı kaydetmektir. Toplu iş dosyaları, .bat veya .cmd uzantısına sahiptir. Toplu iş dosyalarını adlandırırken akılda tutulması gereken bazı genel kurallar -

  • Toplu iş dosyalarını adlandırırken boşluklardan kaçınmaya çalışın, bazen diğer komut dosyalarından çağrıldıklarında sorun yaratır.

  • Bunları, sistemde bulunan ping.cmd gibi yaygın toplu iş dosyalarının adlarından sonra adlandırmayın.

Yukarıdaki ekran görüntüsü, toplu iş dosyasının nasıl kaydedileceğini gösterir. Toplu iş dosyanızı kaydederken aklınızda bulundurmanız gereken birkaç nokta.

  • Dosya adının sonuna .bat veya .cmd koymayı unutmayın.
  • "Kayıt türü" seçeneğini "Tüm Dosyalar" olarak seçin.
  • Tüm dosya adını tırnak işaretleri içine alın "".

Toplu İş Dosyalarını Yürütme

Bir toplu iş dosyasını yürütme adımları aşağıdadır -

  • Step 1 - Komut istemini (cmd.exe) açın.

  • Step 2 - .bat veya .cmd dosyasının depolandığı konuma gidin.

  • Step 3 - Aşağıdaki resimde gösterildiği gibi dosyanın adını yazın ve toplu iş dosyasını yürütmek için Enter düğmesine basın.

Toplu İş Dosyalarını Değiştirme

Mevcut bir toplu iş dosyasını değiştirmeye yönelik adımlar aşağıda verilmiştir.

  • Step 1 - Windows gezginini açın.

  • Step 2 - .bat veya .cmd dosyasının depolandığı konuma gidin.

  • Step 3- Dosyayı sağ tıklayın ve içerik menüsünden "Düzenle" seçeneğini seçin. Dosya, daha fazla düzenleme için Not Defteri'nde açılacaktır.

Normalde, bir toplu iş dosyasındaki ilk satır genellikle aşağıdaki komuttan oluşur.

ECHO Komutu

@echo off

Varsayılan olarak, bir toplu iş dosyası çalışırken komutunu görüntüler. Bu ilk komutun amacı bu ekranı kapatmaktır. "Echo off" komutu, "echo off" komutunun kendisi haricinde, tüm komut dosyası için ekranı kapatır. Öndeki "at" işareti "@" komutun kendisi için de geçerli olmasını sağlar.

Dokümantasyon

Çoğunlukla toplu iş dosyaları, "Rem" komutuyla başlayan satırları da içerir. Bu, yorumları ve belgeleri girmenin bir yoludur. Bilgisayar, Rem'den sonraki satırdaki her şeyi yok sayar. Karmaşıklığı artan toplu dosyalar için, bu genellikle yorumların olması iyi bir fikirdir.

First Batch Script Programı

Basit ilk toplu komut dosyası programımızı oluşturalım. Not defterini açın ve aşağıdaki kod satırlarını girin. Dosyayı "List.cmd" olarak kaydedin.

Kod şunları yapar -

  • Kod yürütüldüğünde komutların gösterilmemesini sağlamak için yankı kapalı komutunu kullanır.

  • Rem komutu, bu toplu iş dosyasının tam olarak ne yaptığını söylemek için bir yorum eklemek için kullanılır.

  • Dir komutu, C: \ Program Files konumunun içeriğini almak için kullanılır.

  • Çıktıyı C: \ lists.txt dosyasına yeniden yönlendirmek için '>' komutu kullanılır.

  • Son olarak, kullanıcıya işlemin tamamlandığını bildirmek için echo komutu kullanılır.

@echo off 
Rem This is for listing down all the files in the directory Program files 
dir "C:\Program Files" > C:\lists.txt 
echo "The program has completed"

Yukarıdaki komut yürütüldüğünde, C: \ Program Files'daki dosyaların adları C: \ Lists.txt dosyasına gönderilecek ve komut isteminde "Program tamamlandı" mesajı görüntülenecektir.

Toplu iş dosyalarında iki tür değişken vardır. Biri, toplu iş dosyası çağrıldığında ve diğeri set komutu ile yapıldığında geçirilebilen parametreler içindir.

Komut Satırı Bağımsız Değişkenleri

Toplu komut dosyaları, komut satırı argümanları kavramını destekler; burada argümanlar, çağrıldığında toplu iş dosyasına iletilebilir. Bağımsız değişkenler, toplu iş dosyalarından% 1,% 2,% 3 vb. Değişkenler aracılığıyla çağrılabilir.

Aşağıdaki örnek, 3 komut satırı argümanını kabul eden ve bunları komut satırı ekranına ekleyen bir toplu iş dosyasını gösterir.

@echo off 
echo %1 
echo %2 
echo %3

Yukarıdaki toplu komut dosyası test.bat adlı bir dosyada saklanıyorsa ve toplu işi şu şekilde çalıştıracaktık:

Test.bat 1 2 3

Aşağıda, toplu iş dosyası yürütüldüğünde bunun komut isteminde nasıl görüneceğinin bir ekran görüntüsü verilmiştir.

Yukarıdaki komut aşağıdaki çıktıyı üretir.

1 
2 
3

Toplu işi şu şekilde yürütürsek

Example 1 2 3 4

Çıktı yine de yukarıdakiyle aynı kalacaktır. Ancak dördüncü parametre göz ardı edilecektir.

Komutu Ayarla

Değişkenlerin başlatılabileceği diğer yol, 'set' komutudur. Set komutunun sözdizimi aşağıdadır.

Sözdizimi

set /A variable-name=value

nerede,

  • variable-name ayarlamak istediğiniz değişkenin adıdır.

  • value değişkene karşı ayarlanması gereken değerdir.

  • /A – Bu anahtar, değerin doğası gereği sayısal olması gerektiğinde kullanılır.

Aşağıdaki örnek, set komutunun kullanılabileceği basit bir yolu göstermektedir.

Misal

@echo off 
set message=Hello World 
echo %message%
  • Yukarıdaki kod parçacığında, mesaj adı verilen bir değişken tanımlanır ve "Merhaba Dünya" değeriyle ayarlanır.

  • Değişkenin değerini görüntülemek için, değişkenin% işaretinin içine alınması gerektiğine dikkat edin.

Çıktı

Yukarıdaki komut aşağıdaki çıktıyı üretir.

Hello World

Sayısal Değerlerle Çalışma

Toplu kodda, sayısal bir değeri tutacak bir değişken tanımlamak da mümkündür. Bu, / A anahtarı kullanılarak yapılabilir.

Aşağıdaki kod, sayısal değerlerin / A anahtarıyla ayarlanabileceği basit bir yolu gösterir.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c%
  • Önce 2 değişkenin değerini, a ve b'yi sırasıyla 5 ve 10 olarak ayarlıyoruz.

  • Bu değerleri ekliyoruz ve c değişkeninde saklıyoruz.

  • Son olarak c değişkeninin değerini görüntülüyoruz.

Yukarıdaki programın çıktısı 15 olacaktır.

Tüm aritmetik operatörler toplu iş dosyalarında çalışır. Aşağıdaki örnek, aritmetik operatörlerin toplu iş dosyalarında kullanılabileceğini gösterir.

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c% 
SET /A c = %a% - %b% 
echo %c% 
SET /A c = %b% / %a% 
echo %c% 
SET /A c = %b% * %a% 
echo %c%

Yukarıdaki komut aşağıdaki çıktıyı üretir.

15 
-5 
2 
50

Yerel ve Global Değişkenler

Herhangi bir programlama dilinde, değişkenleri bir tür kapsama sahip olarak işaretleme seçeneği vardır, yani erişilebilecekleri kod bölümü. Normalde, global kapsama sahip değişkene bir programdan herhangi bir yerden erişilebilirken, yerel kapsamlı değişkenler, erişilebilecekleri tanımlanmış bir sınıra sahiptir.

DOS komut dosyası, yerel ve genel kapsamlı değişkenler için bir tanıma da sahiptir. Varsayılan olarak, değişkenler tüm komut istemi oturumunuz için geneldir. Değişkenleri komut dosyanızın kapsamına göre yerel hale getirmek için SETLOCAL komutunu çağırın. SETLOCAL çağrıldıktan sonra, herhangi bir değişken ataması ENDLOCAL çağrıldığında, EXIT çağrıldığında veya yürütme betiğinizde dosyanın sonuna (EOF) ulaştığında geri döner. Aşağıdaki örnek, kodda yerel ve genel değişkenler ayarlandığında ortaya çıkan farkı gösterir.

Misal

@echo off 
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL

Yukarıdaki program hakkında dikkat edilmesi gereken birkaç önemli nokta.

  • 'Globalvar' global bir kapsam ile tanımlanır ve tüm senaryo boyunca mevcuttur.

  • 'Var' değişkeni, bir 'SETLOCAL' ve 'ENDLOCAL' bloğu arasında yer aldığından yerel bir kapsamda tanımlanır. Bu nedenle, bu değişken 'ENDLOCAL' ifadesi çalıştırılır çalıştırılmaz yok edilecektir.

Çıktı

Yukarıdaki komut aşağıdaki çıktıyı üretir.

13150
5

ENDLOCAL ifadesinden sonra 'var' değişkeni artık mevcut olmayacağından echo% var% komutunun hiçbir şey vermeyeceğini fark edeceksiniz.

Ortam Değişkenleriyle Çalışma

Toplu iş dosyalarında kullanılacak değişkenleriniz varsa, ortam değişkenlerinin kullanılması her zaman tercih edilir. Ortam değişkeni tanımlandıktan sonra,% işaretiyle erişilebilir. Aşağıdaki örnek, bir sistemde tanımlanan JAVA_HOME'un nasıl görüntüleneceğini gösterir. JAVA_HOME değişkeni, normalde çok çeşitli uygulamalar tarafından kullanılan temel bir bileşendir.

@echo off 
echo %JAVA_HOME%

Çıktı, sistemden sisteme bağlı olan JAVA_HOME dizinini gösterecektir. Aşağıda bir çıktı örneği verilmiştir.

C:\Atlassian\Bitbucket\4.0.1\jre

Oluşturulan komut dizilerine yorum veya belge eklemek her zaman iyi bir uygulamadır. Bu, komut dosyalarının gerçekte ne yaptığını anlamak için komut dosyalarının bakımı için gereklidir.

Örneğin, herhangi bir şekilde yorum içermeyen aşağıdaki kod parçasını düşünün. Aşağıdaki senaryoyu geliştirmemiş ortalama bir kişi senaryoyu anlamaya çalışırsa, o kişinin senaryonun gerçekte ne yaptığını anlaması çok zaman alır.

ECHO OFF 
IF NOT "%OS%"=="Windows_NT" GOTO Syntax 
ECHO.%* | FIND "?" >NUL 
IF NOT ERRORLEVEL 1 GOTO Syntax 
IF NOT [%2]==[] GOTO Syntax 
SETLOCAL 
SET WSS= 
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A 
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F 
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND "<03>"') 
DO ECHO.%%a %%A 
ENDLOCAL 
GOTO:EOF 
ECHO Display logged on users and their workstations. 
ECHO Usage: ACTUSR [ filter ] 
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part 
of the computer name^(s^) to be displayed

Rem İfadesini Kullanan Yorumlar

Toplu Komut Dosyasında yorum oluşturmanın iki yolu vardır; biri Rem komutu ile yapılır. Rem ifadesini izleyen herhangi bir metin yorum olarak değerlendirilecek ve çalıştırılmayacaktır. Bu ifadenin genel sözdizimi aşağıdadır.

Sözdizimi

Rem Remarks

burada 'Açıklamalar' eklenmesi gereken yorumlardır.

Aşağıdaki örnek, basit bir şekilde Rem komut kullanılabilir.

Misal

@echo off 
Rem This program just displays Hello World 
set message=Hello World 
echo %message%

Çıktı

Yukarıdaki komut aşağıdaki çıktıyı üretir. Rem ifadesinin bulunduğu satırın çalıştırılmayacağını fark edeceksiniz.

Hello World

:: İfadesini Kullanan Yorumlar

Toplu Komut Dosyasında yorum oluşturmanın diğer yolu :: komutudur. :: ifadesini izleyen herhangi bir metin yorum olarak değerlendirilecek ve çalıştırılmayacaktır. Bu ifadenin genel sözdizimi aşağıdadır.

Sözdizimi

:: Remarks

burada 'Açıklamalar' eklenmesi gereken yorumdur.

Aşağıdaki örnek, "::" komutunun kullanımını gösterir.

Misal

@echo off 
:: This program just displays Hello World 
set message = Hello World 
echo %message%

Çıktı

Yukarıdaki komut aşağıdaki çıktıyı üretir. :: deyiminin bulunduğu satırın çalıştırılmayacağını fark edeceksiniz.

Hello World

Note - Çok fazla Rem satırınız varsa, bu kodu yavaşlatabilir, çünkü sonunda toplu iş dosyasındaki her kod satırının yürütülmesi gerekir.

Bu konunun başında gördüğümüz büyük senaryo örneğine bakalım ve dokümantasyon eklendiğinde nasıl göründüğünü görelim.

::===============================================================
:: The below example is used to find computer and logged on users
::
::===============================================================
ECHO OFF 
:: Windows version check 
IF NOT "%OS%"=="Windows_NT" GOTO Syntax 
ECHO.%* | FIND "?" >NUL 
:: Command line parameter check 
IF NOT ERRORLEVEL 1 GOTO Syntax
IF NOT [%2]==[] GOTO Syntax 
:: Keep variable local 
SETLOCAL 
:: Initialize variable 
SET WSS= 
:: Parse command line parameter 
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A 
:: Use NET VIEW and NBTSTAT to find computers and logged on users 
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F 
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND 
"<03>"') DO ECHO.%%a %%A 
:: Done 
ENDLOCAL
GOTO:EOF 
:Syntax 
ECHO Display logged on users and their workstations. 
ECHO Usage: ACTUSR [ filter ] 
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part of the 
computer name^(s^) to be displayed

Artık, kodun, kodu geliştirmemiş kullanıcılar için daha anlaşılır hale geldiğini ve dolayısıyla daha bakım yapılabilir hale geldiğini görebilirsiniz.

DOS'ta bir dize, "Merhaba, Dünya!" Gibi sıralı bir karakter koleksiyonudur.

S.No Dizeler ve Açıklama
1 Dize Oluştur

DOS'ta aşağıdaki şekilde bir dizi oluşturulabilir.

2 Boş Dize

Boş Dize

3 Dize Enterpolasyonu

Dize enterpolasyonu, değerlerini bir dize değişmezinin içine dahil ederek sabitlerin, değişkenlerin, değişmez değerlerin ve ifadelerin bir karışımından yeni bir String değeri oluşturmanın bir yoludur.

4 Dize Birleştirme

İki dizeyi veya bir dizeyi ve bir karakteri veya iki karakteri birleştirmek için set işlecini kullanabilirsiniz. Aşağıda, dize birleştirmenin nasıl kullanılacağını gösteren basit bir örnek verilmiştir.

5 IP uzunluğu

DOS komut dosyasında, bir dizenin uzunluğunu bulmak için tanımlanmış bir uzunluk işlevi yoktur. Aynı şekilde kullanılabilecek özel tanımlı işlevler vardır. Aşağıda, bir dizenin uzunluğunu görmek için özel olarak tanımlanmış bir işlev örneği verilmiştir.

6 toInt

Set değişkeni kullanılarak dize olarak ayarlanmış bir değişken, set değişkenini kullanan / A anahtarı kullanılarak bir tam sayıya dönüştürülebilir. Aşağıdaki örnek bunun nasıl gerçekleştirilebileceğini göstermektedir.

7 Sağa Hizala

Bu, normalde sayı sütunlarının okunabilirliğini artırmak için kullanılan metni sağa hizalamak için kullanılır.

8 Sol Dize

Bu, bir dizenin başındaki karakterleri çıkarmak için kullanılır.

9 Orta Dize

Bu, dizedeki karakterlerin konumu aracılığıyla bir alt dizeyi çıkarmak için kullanılır.

10 Kaldırmak

Dize değiştirme özelliği, bir alt dizeyi başka bir dizeden kaldırmak için de kullanılabilir.

11 Her İki Ucu Kaldır

Bu, bir dizenin ilk ve son karakterini kaldırmak için kullanılır.

12 Tüm Alanları Kaldır

Bu, değiştirme yoluyla bir dizedeki tüm boşlukları kaldırmak için kullanılır.

13 Dizeyi Değiştirin

Bir alt dizeyi başka bir dizeyle değiştirmek için dize değiştirme özelliğini kullanın.

14 Sağ Dize

Bu, bir dizenin sonundaki karakterleri çıkarmak için kullanılır.

Diziler, Toplu Komut Dosyasında özel olarak bir tür olarak tanımlanmaz, ancak uygulanabilir. Diziler Batch Script'te uygulandığında aşağıdaki hususlara dikkat edilmelidir.

  • Dizinin her bir elemanının set komutu ile tanımlanması gerekir.
  • Dizinin değerleri arasında yineleme yapmak için 'for' döngüsü gerekli olacaktır.

Dizi Oluşturma

Aşağıdaki set komutu kullanılarak bir dizi oluşturulur.

set a[0]=1

0, dizinin dizinidir ve 1, dizinin ilk öğesine atanan değerdir.

Dizileri uygulamanın başka bir yolu, bir değerler listesi tanımlamak ve değerler listesi boyunca yinelemektir. Aşağıdaki örnek, bunun nasıl uygulanabileceğini göstermektedir.

Misal

@echo off 
set list = 1 2 3 4 
(for %%a in (%list%) do ( 
   echo %%a 
))

Çıktı

Yukarıdaki komut aşağıdaki çıktıyı üretir.

1
2
3
4

Dizilere Erişim

Alt simge sözdizimini kullanarak diziden bir değer elde edebilirsiniz, almak istediğiniz değerin dizinini dizinin adından hemen sonra köşeli parantez içinde geçirebilirsiniz.

Misal

@echo off 
set a[0]=1 
echo %a[0]%

Bu örnekte, dizin 0'dan başlamaktadır, bu da ilk elemana 0 olarak dizin kullanılarak erişilebileceği, ikinci elemana 1 olarak dizin kullanılarak erişilebileceği anlamına gelir. Dizileri oluşturmak, başlatmak ve bunlara erişmek için aşağıdaki örneği kontrol edelim -

@echo off
set a[0] = 1 
set a[1] = 2 
set a[2] = 3 
echo The first element of the array is %a[0]% 
echo The second element of the array is %a[1]% 
echo The third element of the array is %a[2]%

Yukarıdaki komut aşağıdaki çıktıyı üretir.

The first element of the array is 1 
The second element of the array is 2 
The third element of the array is 3

Bir Diziyi Değiştirme

Dizinin sonuna bir öğe eklemek için, dizi öğesinin son dizini ile birlikte set öğesini kullanabilirsiniz.

Misal

@echo off 
set a[0] = 1  
set a[1] = 2  
set a[2] = 3 
Rem Adding an element at the end of an array 
Set a[3] = 4 
echo The last element of the array is %a[3]%

Yukarıdaki komut aşağıdaki çıktıyı üretir.

The last element of the array is 4

Aşağıdaki örnekte gösterildiği gibi, belirli bir dizine yeni bir değer atayarak bir Dizinin mevcut bir öğesini değiştirebilirsiniz -

@echo off 
set a[0] = 1 
set a[1] = 2  
set a[2] = 3 
Rem Setting the new value for the second element of the array 
Set a[1] = 5 
echo The new value of the second element of the array is %a[1]%

Yukarıdaki komut aşağıdaki çıktıyı üretir.

The new value of the second element of the array is 5

Bir Dizi Üzerinde Yineleme

Bir dizi üzerinde yineleme, 'for' döngüsü kullanılarak ve dizinin her bir öğesi üzerinden geçilerek elde edilir. Aşağıdaki örnek, bir dizinin uygulanabileceği basit bir yolu gösterir.

@echo off 
setlocal enabledelayedexpansion 
set topic[0] = comments 
set topic[1] = variables 
set topic[2] = Arrays 
set topic[3] = Decision making 
set topic[4] = Time and date 
set topic[5] = Operators 

for /l %%n in (0,1,5) do ( 
   echo !topic[%%n]! 
)

Yukarıdaki programla ilgili aşağıdaki noktalara dikkat edilmesi gerekir:

  • Dizinin her bir öğesi, set komutu kullanılarak özel olarak tanımlanmalıdır.

  • Aralıklar arasında hareket etmek için / L parametresine sahip 'for' döngüsü, dizi içinde yineleme yapmak için kullanılır.

Çıktı

Yukarıdaki komut aşağıdaki çıktıyı üretir.

Comments 
variables 
Arrays 
Decision making 
Time and date 
Operators

Bir Dizinin Uzunluğu

Bir dizinin uzunluğu, bir dizideki öğelerin sayısını belirleyen doğrudan bir işlev olmadığından, dizideki değerler listesi üzerinde yinelenerek yapılır.

@echo off 
set Arr[0] = 1 
set Arr[1] = 2 
set Arr[2] = 3 
set Arr[3] = 4 
set "x = 0" 
:SymLoop 

if defined Arr[%x%] ( 
   call echo %%Arr[%x%]%% 
   set /a "x+=1"
   GOTO :SymLoop 
)
echo "The length of the array is" %x%

Çıktı

Çıktı Yukarıdaki komut aşağıdaki çıktıyı üretir.

The length of the array is 4

Dizilerde Yapı Oluşturma

Yapılar, uygulama için biraz fazladan kodlama kullanılarak toplu dosyalara da uygulanabilir. Aşağıdaki örnek bunun nasıl elde edilebileceğini göstermektedir.

Misal

@echo off 
set len = 3 
set obj[0].Name = Joe 
set obj[0].ID = 1 
set obj[1].Name = Mark 
set obj[1].ID = 2 
set obj[2].Name = Mohan 
set obj[2].ID = 3 
set i = 0 
:loop 

if %i% equ %len% goto :eof 
set cur.Name= 
set cur.ID=

for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do ( 
   set cur.%%k=%%l 
) 
echo Name = %cur.Name% 
echo Value = %cur.ID% 
set /a i = %i%+1 
goto loop

Yukarıdaki kodla ilgili olarak aşağıdaki temel noktalara dikkat edilmelidir.

  • Set komutu kullanılarak tanımlanan her değişken, dizinin her bir dizini ile ilişkili 2 değere sahiptir.

  • Değişken i 0 olarak ayarlanmıştır, böylece yapı boyunca döngü yapabiliriz, 3 olan dizinin uzunluğu olur.

  • Her zaman i'nin değerinin değerine eşit olup olmadığını kontrol ederiz. len ve değilse, kodu gözden geçiririz.

  • Yapının her bir öğesine obj [% i%] gösterimini kullanarak erişebiliyoruz.

Çıktı

Yukarıdaki komut aşağıdaki çıktıyı üretir.

Name = Joe 
Value = 1 
Name = Mark 
Value = 2 
Name = Mohan 
Value = 3

Karar verme yapıları, programcının, program tarafından değerlendirilecek veya test edilecek bir veya daha fazla koşulu, koşulun geçerli olduğu belirlenirse yürütülecek bir ifade veya ifadeyle birlikte belirtmesini gerektirir. trueve isteğe bağlı olarak, koşul olarak belirlenirse yürütülecek diğer ifadeler false.

S.No Dizeler ve Açıklama
1 If İfadesi

İlk karar verme ifadesi 'eğer' ifadesidir.

2 If / else İfadesi

Bir sonraki karar verme ifadesi If / else ifadesidir. Bu ifadenin genel şekli aşağıdadır.

3 İç İçe If İfadeleri

Bazen, birden çok 'if' ifadesinin birbirinin içine gömülü olması gerekir. Bu ifadenin genel şekli aşağıdadır.

Operatör, derleyiciye belirli matematiksel veya mantıksal işlemleri gerçekleştirmesini söyleyen bir semboldür.

Toplu komut dosyasında, aşağıdaki türden işleçler mümkündür.

  • Aritmetik operatörler
  • İlişkisel operatörler
  • Mantıksal operatörler
  • Atama operatörleri
  • Bitsel operatörler

Aritmetik operatörler

Toplu kod dili, normal Aritmetik operatörlerini herhangi bir dil gibi destekler. Aşağıda mevcut Aritmetik operatörler verilmiştir.

Örnek Göster

Şebeke Açıklama Misal
+ İki işlenenin eklenmesi 1 + 2 3 verir
- İlk işlenenden ikinci işleneni çıkarır 2-1 1 verir
* Her iki işlenenin çarpımı 2 * 2 4 verecek
/ Payın paydaya bölümü 3/2 1.5 verecek
% Modül operatörü ve bir tamsayı / kayan bölümden sonra kalanı % 3 2 1 verir

İlişkisel Operatörler

İlişkisel operatörler, nesnelerin karşılaştırılmasına izin verir. Aşağıda mevcut ilişkisel operatörler bulunmaktadır.

Örnek Göster

Şebeke Açıklama Misal
EQU İki nesne arasındaki eşitliği test eder 2 EQU 2 doğru verecektir
NEQ İki nesne arasındaki farkı test eder 3 NEQ 2 doğru verecek
LSS Soldaki nesnenin sağ işlenenden daha küçük olup olmadığını kontrol eder 2 LSS 3 doğru verecektir
LEQ Soldaki nesnenin sağ işlenenden küçük veya ona eşit olup olmadığını kontrol eder 2 LEQ 3 doğru verecektir
GTR Soldaki nesnenin sağ işlenenden büyük olup olmadığını kontrol eder 3 GTR 2 gerçek verecek
GEQ Soldaki nesnenin sağ işlenenden büyük veya ona eşit olup olmadığını kontrol eder 3 GEQ 2 gerçek verecek

Mantıksal operatörler

Mantıksal operatörler, Boole ifadelerini değerlendirmek için kullanılır. Mevcut mantıksal operatörler aşağıdadır.

Toplu iş dili, AND, OR, XOR gibi tam bir Boolean mantık operatörleri setiyle donatılmıştır, ancak yalnızca ikili sayılar için. DOĞRU veya YANLIŞ için herhangi bir değer yoktur. Koşullar için kullanılabilen tek mantıksal operatör, DEĞİL operatörüdür.

Örnek Göster

Şebeke Açıklama
VE Bu, mantıksal "ve" operatörüdür
VEYA Bu, mantıksal "veya" operatörüdür
DEĞİL Bu, mantıksal "değil" operatörüdür

Atama Operatörleri

Toplu Komut Dosyası dili ayrıca atama operatörleri sağlar. Aşağıda mevcut atama operatörleri verilmiştir.

Örnek Göster

Şebeke Açıklama Misal
+ = Bu, soldaki işlenene sağ işlenen ekler ve sonucu sol işlenenlere atar

Set / A a = 5

a + = 3

Çıktı 8 olacak

- = Bu, sağ işleneni soldaki işlenenden çıkarır ve sonucu sol işlenene atar

Set / A a = 5

a - = 3

Çıktı 2 olacak

* = Bu, sağ işleneni sol işlenenle çarpar ve sonucu sol işlenene atar

Set / A a = 5

a * = 3

Çıktı 15 olacak

/ = Bu, sol işleneni sağ işlenenle böler ve sonucu sol işlenene atar

Set / A a = 6

a / = 3

Çıktı 2 olacak

% = Bu, iki işlenen kullanarak modülü alır ve sonucu soldaki işlenene atar

Set / A a = 5

a% = 3

Çıktı 2 olacak

Bitsel Operatörler

Bitsel operatörler toplu komut dosyasında da mümkündür. Mevcut operatörler aşağıdadır.

Örnek Göster

Şebeke Açıklama
& Bu bitsel "ve" operatörüdür
| Bu bitsel "veya" operatörüdür
^ Bu bitsel "xor" veya Exclusive veya operatördür

Bu operatörleri gösteren doğruluk tablosu aşağıdadır.

p q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

DOS Komut Dosyası'ndaki tarih ve saat, sistemin tarih ve saatini almak için aşağıdaki iki temel komuta sahiptir.

TARİH

Bu komut sistem tarihini alır.

Sözdizimi

DATE

Misal

@echo off 
echo %DATE%

Çıktı

Geçerli tarih komut isteminde görüntülenecektir. Örneğin,

Mon 12/28/2015

ZAMAN

Bu komut zamanı ayarlar veya görüntüler.

Sözdizimi

TIME

Misal

@echo off 
echo %TIME%

Çıktı

Mevcut sistem saati görüntülenecektir. Örneğin,

22:06:52.87

Tarih ve saati farklı biçimlerde almak için kullanılabilecek bazı uygulamalar aşağıdadır.

Yıl-Ay-Gün Biçimindeki Tarih

Misal

@echo off 
echo/Today is: %year%-%month%-%day% 
goto :EOF 
setlocal ENABLEEXTENSIONS 
set t = 2&if "%date%z" LSS "A" set t = 1 

for /f "skip=1 tokens = 2-4 delims = (-)" %%a in ('echo/^|date') do ( 
   for /f "tokens = %t%-4 delims=.-/ " %%d in ('date/t') do ( 
      set %%a=%%d&set %%b=%%e&set %%c=%%f)) 
endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF

Çıktı

Yukarıdaki komut aşağıdaki çıktıyı üretir.

Today is: 2015-12-30

Klavye girişi, ekranda metin yazdırma ve ekranda yazdırma hataları için üç evrensel "dosya" vardır. "Standard In" dosyası;stdin, programın / komut dosyasının girdisini içerir. "Standart Çıkış" dosyası;stdout, ekranda görüntülenmek üzere çıktı yazmak için kullanılır. Son olarak, "Standard Err" dosyası olarak bilinenstderr, ekranda görüntülenmek üzere herhangi bir hata mesajı içerir.

Standart akışlar olarak da bilinen bu üç standart dosyanın her birine 0, 1 ve 2 sayıları kullanılarak başvurulur. Stdin 0 dosyası, stdout 1 dosyası ve stderr dosyası 2'dir.

Çıkışı Yeniden Yönlendirme (Stdout ve Stderr)

Toplu iş dosyalarındaki yaygın bir uygulama, bir programın çıktısını bir günlük dosyasına göndermektir. > Operatörü stdout veya stderr'i başka bir dosyaya gönderir veya yeniden yönlendirir. Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir.

Dir C:\ > list.txt

Yukarıdaki örnekte, stdout Dir C: \ komutunun listesi list.txt dosyasına yeniden yönlendirilir.

2 sayısını yeniden yönlendirme filtresine eklerseniz, stderr lists.txt dosyasına.

Dir C:\ 2> list.txt

Biri bile birleştirebilir stdout ve stderrdosya numarası ve '&' önekini kullanarak akışlar. Aşağıda bir örnek verilmiştir.

DIR C:\ > lists.txt 2>&1

Program Çıktısının Bastırılması

Sözde dosya NUL, bir programdan herhangi bir çıktıyı atmak için kullanılır. Aşağıdaki örnek, DIR komutunun çıktısının, çıktı NUL'a gönderilerek atıldığını gösterir.

Dir C:\ > NUL

Stdin

Stdin ile çalışmak için, bunu başarmak için bir geçici çözüm kullanmanız gerekir. Bu, komut isteminin CON adı verilen kendi stdinini yeniden yönlendirerek yapılabilir.

Aşağıdaki örnek, çıktıyı lists.txt adlı bir dosyaya nasıl yeniden yönlendirebileceğinizi gösterir. Aşağıdaki komutu uyguladıktan sonra, komut istemi bir EOF karakteri alana kadar kullanıcı tarafından girilen tüm girdileri alacaktır. Daha sonra, tüm girdileri lists.txt dosyasına gönderir.

TYPE CON > lists.txt

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ınmaz. 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 kapatma 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ımlanmadığını görürsek, hata düzeyi kodunu şu şekilde ayarlamalıyız: 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 seviyesinin 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 ayrıca 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

Aşağıda, çoğu programlama dilinde mevcut olan klasik 'for' ifadesi yer almaktadı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 ifadesi 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.

Bir işlev, belirli bir görevi gerçekleştirmek için birlikte düzenlenen bir dizi ifadedir. Toplu komut dosyalarında, mantıksal ifadeleri bir işlev oluşturmak üzere gruplamak için benzer bir yaklaşım benimsenir.

Diğer diller gibi, Toplu Komut Dosyasındaki işlevler de aynı prosedürü izler -

  • Function Declaration - Derleyiciye bir işlevin adı, dönüş türü ve parametreleri hakkında bilgi verir.

  • Function Definition - Fonksiyonun gerçek gövdesini sağlar.

İşlev Tanımı

Toplu Komut Dosyasında, etiket ifadesi kullanılarak bir işlev tanımlanır. Bir işlev yeni tanımlandığında, işleve girdi 'parametreler' olarak bir veya birkaç değeri alabilir, ana gövdedeki işlevleri işleyebilir ve değerleri çıktı 'dönüş türleri' olarak işlevlere geri gönderebilir.

Her işlevin, gerçekleştirdiği görevi tanımlayan bir işlev adı vardır. Bir işlevi kullanmak için, o işlevi adıyla "çağırırsınız" ve işlevin parametre türleriyle eşleşen girdi değerlerini (argümanlar olarak bilinir) iletirsiniz.

Basit bir işlevin sözdizimi aşağıdadır.

:function_name 
Do_something 
EXIT /B 0
  • İşlev_adı, işlevin gerçekte yaptıklarıyla eşleşecek bir anlamı olması gereken işleve verilen addır.

  • EXIT deyimi, işlevin düzgün şekilde çıkmasını sağlamak için kullanılır.

Aşağıda basit bir işleve bir örnek verilmiştir.

Misal

:Display 
SET /A index=2 
echo The value of index is %index% 
EXIT /B 0
S.No Fonksiyonlar ve Açıklama
1 Bir Fonksiyon Çağırma

Çağrı komutu kullanılarak Toplu Komut Dosyasında bir işlev çağrılır.

2 Parametreli Fonksiyonlar

Fonksiyonlar, fonksiyona bir çağrı yapıldığında onları basitçe geçirerek parametrelerle çalışabilir.

3 Dönüş Değerli Fonksiyonlar

Fonksiyonlar, sadece değişken isimlerini ileterek dönüş değerleri ile çalışabilir

4 Fonksiyonlarda Yerel Değişkenler

İşlevlerdeki yerel değişkenler, ad çakışmalarını önlemek ve değişken değişikliklerini işlev için yerel tutmak için kullanılabilir.

5 Özyinelemeli İşlevler

Değişken değişiklikleri işleve yerel ve arayan için görünmez tutarak bir işlevin gövdesini tamamen kapsülleme yeteneği.

6 Dosya G / Ç

Toplu Komut Dosyasında, herhangi bir programlama dilinde beklenebilecek normal dosya G / Ç işlemlerini gerçekleştirmek mümkündür.

7 Dosya Oluşturma

Yeni bir dosyanın oluşturulması, yönlendirme filtresi> yardımıyla yapılır. Bu filtre, herhangi bir çıktıyı bir dosyaya yeniden yönlendirmek için kullanılabilir.

8 Dosyalara Yazma

Dosyalara içerik yazımı da yeniden yönlendirme filtresinin yardımıyla yapılır>. Bu filtre, herhangi bir çıktıyı bir dosyaya yeniden yönlendirmek için kullanılabilir.

9 Dosyalara Ekleme

Dosyalara içerik yazımı da çift yönlendirme filtresi >> yardımıyla yapılır. Bu filtre, herhangi bir çıktıyı bir dosyaya eklemek için kullanılabilir.

10 Dosyalardan Okuma

Bir toplu iş komut dosyasındaki dosyaların okunması, okunması gereken dosyada tanımlanan her satırın üzerinden geçmek için FOR döngü komutu kullanılarak yapılır.

11 Dosyaları Silme

Dosyaları silmek için Toplu Komut Dosyası, DEL komutunu sağlar.

12 Dosyaları Yeniden Adlandırma

Dosyaları yeniden adlandırmak için Toplu Komut Dosyası, REN veya RENAME komutunu sağlar.

13 Dosyaları Taşıma

Dosyaları taşımak için Toplu Komut Dosyası, MOVE komutunu sağlar.

14 Toplu İş Dosyaları - Borular

Boru operatörü (|) bir komutun çıktısını (varsayılan olarak STDOUT) alır ve onu başka bir komutun girişine (varsayılan olarak STDIN) yönlendirir.

15 Toplu İş Dosyaları - Girişler

Bir toplu iş dosyası çalıştırıldığında, size daha sonra işlenmek üzere program içinde okunabilen komut satırı parametrelerini iletme seçeneği sunar.

16 SHIFT Operatörünü Kullanma

Komut satırı bağımsız değişkenlerinin sınırlamalarından biri, yalnızca% 9'a kadar bağımsız değişkenleri kabul edebilmesidir. Bu sınırlamaya bir örnek verelim.

17 Klasörler

Toplu Komut Dosyasında, herhangi bir programlama dilinde beklenebilecek normal klasör tabanlı işlemleri gerçekleştirmek mümkündür.

18 Klasör Oluşturma

Bir klasörün oluşturulması MD (Dizin oluştur) komutunun yardımı ile yapılır.

19 Klasör İçeriklerini Listeleme

Klasör içeriklerinin listesi dir komutu ile yapılabilir. Bu komut, mevcut dizindeki mevcut dosyaları ve dizinleri görmenizi sağlar.

20 Klasörleri Silme

Klasörleri silmek için Toplu Komut Dosyası, DEL komutunu sağlar.

21 Klasörleri Yeniden Adlandırma

Klasörleri yeniden adlandırmak için Toplu Komut Dosyası, REN veya RENAME komutunu sağlar.

22 Klasörleri Taşıma

Klasörleri taşımak için Toplu Komut Dosyası, MOVE komutunu sağlar.

Bu bölümde, Batch Script'te yer alan çeşitli süreçleri tartışacağız.

Çalışan İşlemlerin Listesini Görüntüleme

Toplu Komut Dosyasında, TASKLIST komutu, bir sistem içinde şu anda çalışan işlemlerin listesini almak için kullanılabilir.

Sözdizimi

TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter]
[/FO format] [/NH]
S.No. Seçenekler ve Açıklama
1.

/S system

Bağlanılacak uzak sistemi belirtir

2.

/U

[domain\]user

Komutun altında çalışması gereken kullanıcı bağlamını belirtir.

3.

/P [password]

Verilen kullanıcı içeriği için parolayı belirtir. Atlanırsa, girdi ister.

4.

/M [module]

Verilen exe / dll adını kullanan tüm görevleri listeler. Modül adı belirtilmezse, yüklenen tüm modüller görüntülenir.

5.

/SVC

Her işlemde barındırılan hizmetleri görüntüler.

6.

/V

Ayrıntılı görev bilgilerini görüntüler.

7.

/FI filter

Filtre tarafından belirtilen belirli bir kriterle eşleşen bir dizi görevi görüntüler.

8.

/FO format

Çıktı formatını belirtir. Geçerli değerler: "TABLE", "LIST", "CSV".

9.

/NH

"Sütun Başlığı" nın çıktıda gösterilmemesi gerektiğini belirtir. Yalnızca "TABLE" ve "CSV" biçimleri için geçerlidir.

Örnekler

TASKLIST

Yukarıdaki komut, yerel sisteminizde çalışan tüm işlemlerin listesini alacaktır. Aşağıda, yukarıdaki komut olduğu gibi çalıştırıldığında oluşturulan çıktının bir anlık görüntüsü bulunmaktadır. Aşağıdaki çıktıdan da görebileceğiniz gibi, sadece sisteminizde çalışan çeşitli işlemleri değil, aynı zamanda her işlemin bellek kullanımını da elde edersiniz.

Image Name                    PID       Session Name       Session#     Mem Usage
========================= ========    ================ =========== ============
System Idle Process             0        Services            0              4 K
System                          4        Services            0            272 K
smss.exe                      344        Services            0          1,040 K
csrss.exe                     528        Services            0          3,892 K
csrss.exe                     612        Console             1         41,788 K
wininit.exe                   620        Services            0          3,528 K
winlogon.exe                  648        Console             1          5,884 K
services.exe                  712        Services            0          6,224 K
lsass.exe                     720        Services            0          9,712 K
svchost.exe                   788        Services            0         10,048 K
svchost.exe                   832        Services            0          7,696 K
dwm.exe                       916        Console             1        117,440 K
nvvsvc.exe                    932        Services            0          6,692 K
nvxdsync.exe                  968        Console             1         16,328 K
nvvsvc.exe                    976        Console             1         12,756 K
svchost.exe                  1012        Services            0         21,648 K
svchost.exe                   236        Services            0         33,864 K
svchost.exe                   480        Services            0         11,152 K
svchost.exe                  1028        Services            0         11,104 K
svchost.exe                  1048        Services            0         16,108 K
wlanext.exe                  1220        Services            0         12,560 K
conhost.exe                  1228        Services            0          2,588 K
svchost.exe                  1276        Services            0         13,888 K
svchost.exe                  1420        Services            0         13,488 K
spoolsv.exe                  1556        Services            0          9,340 K

tasklist > process.txt

Yukarıdaki komut, tasklist tarafından görüntülenen çıktıyı alır ve process.txt dosyasına kaydeder.

tasklist /fi "memusage gt 40000"

Yukarıdaki komut yalnızca belleği 40MB'den büyük olan işlemleri getirecektir. Aşağıda, işlenebilecek örnek bir çıktı verilmiştir.

Image Name                    PID      Session Name     Session#     Mem Usage
=========================   ======== ================ =========== ============
dwm.exe                        916     Console             1        127,912 K
explorer.exe                  2904     Console             1        125,868 K
ServerManager.exe             1836     Console             1         59,796 K
WINWORD.EXE                   2456     Console             1        144,504 K
chrome.exe                    4892     Console             1        123,232 K
chrome.exe                    4976     Console             1         69,412 K
chrome.exe                    1724     Console             1         76,416 K
chrome.exe                    3992     Console             1         56,156 K
chrome.exe                    1168     Console             1        233,628 K
chrome.exe                     816     Console             1         66,808 K

Belirli Bir Süreci Öldürmek

Microsoft Windows XP Professional, Windows 2003 veya sonraki bir sürümünü çalıştıran bir kullanıcının bir Windows komut satırındaki bir görevi işlem kimliği (PID) veya görüntü adına göre sonlandırmasına izin verir. Bu amaçla kullanılan komut, TASKILL komutudur.

Sözdizimi

TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] 
[/PID processid | /IM imagename] } [/T] [/F]
S.No. Seçenekler ve Açıklama
1.

/S system

Bağlanılacak uzak sistemi belirtir

2.

/U

[domain\]user

Komutun altında çalışması gereken kullanıcı bağlamını belirtir.

3.

/P [password]

Verilen kullanıcı içeriği için parolayı belirtir. Atlanırsa, girdi ister.

4.

/FI

FilterName

Bir dizi görev seçmek için bir filtre uygular. "*" Kullanılmasına izin verir. ör. imagename eq acme * Ek bilgi ve örnekler için aşağıdaki filtrelere bakın.

5.

/PID

processID

Sonlandırılacak işlemin PID'sini belirtir. PID'yi almak için TaskList'i kullanın.

6.

/IM

ImageName

Sonlandırılacak işlemin görüntü adını belirtir. Joker karakter '*' tüm görevleri veya görüntü adlarını belirtmek için kullanılabilir.

7.

/T

Belirtilen süreci ve onun tarafından başlatılan tüm alt işlemleri sonlandırır.

8.

/F

İşlem (ler) in zorla sonlandırılacağını belirtir.

Örnekler

taskkill /f /im notepad.exe

Yukarıdaki komut, açıksa, açık not defteri görevini sonlandırır.

taskill /pid 9214

Yukarıdaki komut, 9214 işlemi olan bir işlemi öldürür.

Yeni Bir Süreç Başlamak

DOS komut dosyası oluşturma, yeni bir işlemi tümüyle başlatma imkanına da sahiptir. Bu, START komutu kullanılarak elde edilir.

Sözdizimi

START "title" [/D path] [options] "command" [parameters]

Nerede

  • title - CMD penceresi başlık çubuğu metni (gereklidir.)

  • path - Başlangıç ​​dizini.

  • command - Çalıştırılacak komut, toplu iş dosyası veya yürütülebilir program.

  • parameters - Komuta aktarılan parametreler.

S.No. Seçenekler ve Açıklama
1.

/MIN

Başlat penceresi Küçültülmüş

2.

/MAX

Başlangıç ​​penceresi büyütüldü.

3.

/LOW

IDLE öncelik sınıfını kullanın.

4.

/NORMAL

NORMAL öncelik sınıfını kullanın.

5.

/ABOVENORMAL

ABOVENORMAL öncelik sınıfını kullanın.

6.

/BELOWNORMAL

BELOWNORMAL öncelik sınıfını kullanın.

7.

/HIGH

YÜKSEK öncelik sınıfını kullanın.

8.

/REALTIME

GERÇEK ZAMAN öncelik sınıfını kullanın.

Örnekler

START "Test Batch Script" /Min test.bat

Yukarıdaki komut test.bat toplu komut dosyasını yeni bir pencerede çalıştıracaktır. Pencereler simge durumuna küçültülmüş modda başlayacak ve ayrıca "Toplu İş Komut Dosyasını Test Et" başlığına sahip olacaktır.

START "" "C:\Program Files\Microsoft Office\Winword.exe" "D:\test\TESTA.txt"

Yukarıdaki komut aslında Microsoft word'ü başka bir işlemde çalıştıracak ve ardından MS Word'de TESTA.txt dosyasını açacaktır.

Takma adlar, mevcut komutlar için kısayollar veya anahtar sözcükler oluşturmak anlamına gelir. Bir dizin listesinde gerekli tüm ayrıntıları göstermemek için / w seçeneğiyle dizin listeleme komutundan başka bir şey olmayan aşağıdaki komutu yürütmek istediğimizi varsayalım.

Dir /w

Bu komuta aşağıdaki gibi bir kısayol oluşturacaksak varsayalım.

dw = dir /w

Yürütmek istediğimizde dir /w komut, basitçe kelimeyi yazabiliriz dw. 'Dw' kelimesi artık Dir / w komutunun takma adı haline geldi.

Bir Takma Ad Oluşturma

Takma adlar kullanılarak yönetilir doskey komut.

Sözdizimi

DOSKEY [options] [macroname=[text]]

Nerede

  • macroname - Makro için kısa bir isim.

  • text - Geri çağırmak istediğiniz komutlar.

DOSKEY komutuna sunulabilecek seçeneklerin açıklaması aşağıdadır.

S.No. Seçenekler ve Açıklama
1.

/REINSTALL

Doskey'in yeni bir kopyasını yükler

2.

/LISTSIZE = size

Komut geçmişi arabelleğinin boyutunu ayarlar.

3.

/MACROS

Tüm Doskey makrolarını görüntüler.

4.

/MACROS:ALL

Doskey makroları olan tüm yürütülebilir dosyalar için tüm Doskey makrolarını görüntüler.

5.

/MACROS:exename

Verilen yürütülebilir dosya için tüm Doskey makrolarını görüntüler.

6.

/HISTORY

Hafızada saklanan tüm komutları görüntüler.

7.

/INSERT

Yazdığınız yeni metnin eski metne eklendiğini belirtir.

8.

/OVERSTRIKE

Yeni metnin eski metnin üzerine yazdığını belirtir.

9.

/EXENAME = exename

Yürütülebilir dosyayı belirtir.

10.

/MACROFILE = filename

Yüklenecek bir makro dosyası belirtir.

11.

macroname

Oluşturduğunuz bir makro için bir ad belirtir.

12.

text

Kaydetmek istediğiniz komutları belirtir.

Misal

Keys.bat adlı yeni bir dosya oluşturun ve dosyaya aşağıdaki komutları girin. Aşağıdaki komutlar, biri cd komutu için olmak üzere, otomatik olarak test adlı dizine giden iki takma ad oluşturur. Diğeri ise dir komutu içindir.

@echo off
doskey cd = cd/test
doskey d = dir

Komutu çalıştırdığınızda, bu takma adları komut isteminde çalıştırabilirsiniz.

Çıktı

Aşağıdaki ekran görüntüsü, yukarıda oluşturulan toplu iş dosyası yürütüldükten sonra, 'd' komutunu serbestçe girebileceğinizi ve size dizin listesini vereceğini, yani takma adınızın oluşturulduğunu gösterir.

Bir Takma Adın Silinmesi

Bir diğer ad veya makro, makronun değeri NULL olarak ayarlanarak silinebilir.

Misal

@echo off
doskey cd = cd/test
doskey d = dir
d=

Yukarıdaki örnekte, önce d makrosunu d = dir olarak ayarlıyoruz. Bundan sonra onu NULL olarak ayarlıyoruz. D'nin değerini NULL olarak ayarladığımız için, d makrosu silinecektir.

Bir Takma Adın Değiştirilmesi

Bir diğer ad veya makro, makronun değeri istenen yeni değere ayarlanarak değiştirilebilir.

Misal

@echo off
doskey cd = cd/test
doskey d = dir

d = dir /w

Yukarıdaki örnekte, önce d makrosunu d = dir olarak ayarlıyoruz. Bundan sonra onu dir / w olarak ayarlıyoruz. D'nin değerini yeni bir değere ayarladığımız için, 'd' takma adı şimdi yeni değeri alacaktır.

Windows artık, sisteme bağlı aygıtlarla çalışmak için Toplu Komut Dosyasında kullanılabilen geliştirilmiş bir kitaplığa sahiptir. Bu, aygıt konsolu - DevCon.exe olarak bilinir.

Windows sürücü geliştiricileri ve test uzmanları, uygun INF dosyaları, sürücü yığını, sürücü dosyaları ve sürücü paketi dahil olmak üzere bir sürücünün doğru şekilde yüklendiğini ve yapılandırıldığını doğrulamak için DevCon'u kullanabilir. Sürücüyü test etmek için komut dosyalarında DevCon komutlarını da (etkinleştir, devre dışı bırak, yükle, başlat, durdur ve devam et) kullanabilirsiniz.DevCon yerel bilgisayarlarda ve uzak bilgisayarlarda aygıt yönetimi işlevlerini gerçekleştiren bir komut satırı aracıdır.

Sürücü ve aygıt bilgilerini görüntüleme DevCon, yerel bilgisayarlarda ve uzak bilgisayarlarda (Windows XP ve önceki sürümleri çalıştıran) sürücü ve aygıtların aşağıdaki özelliklerini görüntüleyebilir -

  • Donanım kimlikleri, uyumlu kimlikler ve cihaz örnek kimlikleri. Bu tanımlayıcılar, cihaz tanımlama dizilerinde ayrıntılı olarak açıklanmaktadır.

  • Cihaz kurulum sınıfları.

  • Bir cihaz kurulum sınıfındaki cihazlar.

  • INF dosyaları ve aygıt sürücüsü dosyaları.

  • Sürücü paketlerinin ayrıntıları.

  • Donanım kaynakları.

  • Cihaz durumu.

  • Beklenen sürücü yığını.

  • Sürücü deposundaki üçüncü taraf sürücü paketleri.

  • Aygıtları arayın DevCon, donanım kimliği, aygıt örnek kimliği veya aygıt kurulum sınıfına göre yerel veya uzak bir bilgisayarda yüklü ve kaldırılmış aygıtları arayabilir.

  • Aygıt ayarlarını değiştirme DevCon, yerel bilgisayardaki Tak ve Kullan (PnP) aygıtlarının durumunu veya yapılandırmasını aşağıdaki şekillerde değiştirebilir -

    • Bir cihazı etkinleştirin.

    • Bir cihazı devre dışı bırakın.

    • Sürücüleri güncelleyin (etkileşimli ve etkileşimli olmayan).

    • Bir cihaz kurun (bir devnode oluşturun ve yazılımı kurun).

    • Aygıt ağacından bir aygıtı kaldırın ve aygıt yığınını silin.

    • Tak ve Kullan aygıtları yeniden tarayın.

    • Kök olarak numaralandırılmış cihazların donanım kimliklerini ekleyin, silin ve yeniden sıralayın.

    • Bir aygıt kurulum sınıfı için üst ve alt filtre sürücülerini değiştirin.

    • Üçüncü taraf sürücü paketlerini sürücü deposundan ekleyin ve silin.

DevCon (DevCon.exe), masaüstü uygulamaları için WDK, Visual Studio ve Windows SDK'yı yüklediğinizde dahil edilir. DevCon.exe kiti kurulduğunda aşağıdaki konumlarda bulunur.

%WindowsSdkDir%\tools\x64\devcon.exe
%WindowsSdkDir%\tools\x86\devcon.exe
%WindowsSdkDir%\tools\arm\devcon.exe

Sözdizimi

devcon [/m:\\computer] [/r] command [arguments]

burada

  • /m:\\computer- Komutu belirtilen uzak bilgisayarda çalıştırır. Ters eğik çizgiler gereklidir.

  • /r- Koşullu yeniden başlatma. Yalnızca bir değişikliğin etkili olması için yeniden başlatma gerekirse bir işlemi tamamladıktan sonra sistemi yeniden başlatır.

  • command - Bir DevCon komutu belirtir.

  • Bilgisayardaki aygıtlarla ilgili bilgileri listelemek ve görüntülemek için aşağıdaki komutları kullanın -

    • DevCon HwID'leri

    • DevCon Sınıfları

    • DevCon Liste Sınıfı

    • DevCon Sürücü Dosyaları

    • DevCon Sürücü Düğümleri

    • DevCon Kaynakları

    • DevCon Yığını

    • DevCon Durumu

    • DevCon Dp_enum

  • Bilgisayardaki cihazlar hakkında bilgi aramak için aşağıdaki komutları kullanın -

    • DevCon Bul

    • DevCon Tümünü Bul

  • Cihazı değiştirmek veya yapılandırmasını değiştirmek için aşağıdaki komutları kullanın -

    • DevCon Etkinleştir

    • DevCon Devre Dışı Bırakma

    • DevCon Güncellemesi

    • DevCon GüncellemesiNI

    • DevCon Kurulumu

    • DevCon Kaldır

    • DevCon Yeniden Tarama

    • DevCon Yeniden Başlatma

    • DevCon Yeniden Başlatma

    • DevCon SetHwID

    • DevCon Sınıf Filtresi

    • DevCon Dp_add

    • DevCon Dp_delete

Örnekler

Aşağıda DevCon komutunun nasıl kullanıldığına dair bazı örnekler verilmiştir.

List all driver files

Aşağıdaki komut, sistemdeki aygıtların kullandığı sürücülerin dosya adlarını listelemek için DevCon DriverFiles işlemini kullanır. Komut, sistemdeki tüm aygıtları belirtmek için joker karakteri (*) kullanır. Çıktı kapsamlı olduğundan, komut, çıktıyı bir referans dosyasına (driverfiles.txt) yeniden yönlendirmek için yeniden yönlendirme karakterini (>) kullanır.

devcon driverfiles * > driverfiles.txt

Aşağıdaki komut, yerel bilgisayardaki tüm aygıtların durumunu bulmak için DevCon durum işlemini kullanır. Daha sonra durumu günlüğe kaydetmek veya daha sonra gözden geçirmek için status.txt dosyasına kaydeder. Komut, tüm aygıtları temsil etmek için joker karakter (*) ve çıktıyı status.txt dosyasına yeniden yönlendirmek için yeniden yönlendirme karakterini (>) kullanır.

devcon status * > status.txt

Aşağıdaki komut, bir DevCon Etkinleştirme komutunda Yazıcı kurulum sınıfını belirterek bilgisayardaki tüm yazıcı aygıtlarını etkinleştirir. Komut, etkinleştirmeyi etkili hale getirmek gerekirse sistemi yeniden başlatan / r parametresini içerir.

devcon /r enable = Printer

Aşağıdaki komut, yerel bilgisayara bir klavye aygıtı kurmak için DevCon Yükleme işlemini kullanır. Komut, aygıt için INF dosyasının tam yolunu (keyboard.inf) ve bir donanım kimliğini (* PNP030b) içerir.

devcon /r install c:\windows\inf\keyboard.inf *PNP030b

Aşağıdaki komut, bilgisayarı yeni cihazlar için tarayacaktır.

devcon scan

Aşağıdaki komut, bilgisayarı yeni cihazlar için yeniden tarayacaktır.

devcon rescan

Kayıt defteri, bir Windows sistemindeki temel unsurlardan biridir. İşletim sisteminin çeşitli yönleri hakkında birçok bilgi içerir. Bir Windows sistemine yüklenen hemen hemen tüm uygulamalar kayıt defteri ile bir şekilde veya başka şekilde etkileşime girer.

Kayıt Defteri iki temel öğe içerir: anahtarlar ve değerler. Registry keys klasörlere benzer konteyner nesneleridir. Registry valuesdosyalara benzer, kapsayıcı olmayan nesnelerdir. Anahtarlar, değerler veya başka anahtarlar içerebilir. Anahtarlara, hiyerarşi düzeylerini belirtmek için ters eğik çizgiler kullanılarak, Windows'un yol adlarına benzer bir sözdizimi ile başvurulur.

Bu bölüm değerleri sorgulama, kayıt defterinden değer ekleme, silme ve düzenleme gibi çeşitli işlevlere bakar.

S.No Kayıt Türleri ve Açıklama
1 Kayıt Defterinden Okuma

Kayıt defterinden okuma, REG QUERY komutu ile yapılır.

2 Sicile Ekleme

Kayıt defterine ekleme, REG ADD komutu ile yapılır.

3 Kayıt Defterinden Silme

Kayıt defterinden silme, REG DEL komutu ile yapılır.

4 Kayıt Anahtarlarını Kopyalama

Kayıt defterinden kopyalama REG COPY komutu ile yapılır.

5 Kayıt Anahtarlarını Karşılaştırma

Kayıt defteri anahtarlarının karşılaştırılması REG COMPARE komutuyla yapılır.

Toplu komut dosyası, ağ ayarlarıyla çalışma özelliğine sahiptir. NET komutu, ağ veya ağ ayarlarını güncellemek, düzeltmek veya görüntülemek için kullanılır. Bu bölüm, net komutu için kullanılabilen farklı seçeneklere bakar.

S.No NET Komutları ve Açıklaması
1 NET HESAPLAR

Bilgisayar için geçerli parolayı ve oturum açma kısıtlamalarını görüntüleyin.

2 NET YAPILANDIRMA

Mevcut sunucu veya çalışma grubu ayarlarınızı görüntüler.

3 NET BİLGİSAYAR

Windows etki alanı denetleyicisine bağlı bir bilgisayarı ekler veya kaldırır.

4 KULLANICI

Bu komut aşağıdakiler için kullanılabilir

Belirli bir kullanıcı hesabının ayrıntılarını görüntüleyin.

5 NET DURDUR / BAŞLAT

Bu komut, belirli bir hizmeti durdurmak ve başlatmak için kullanılır.

6 NET İSTATİSTİKLERİ

İş istasyonunun veya sunucunun ağ istatistiklerini görüntüleyin.

7 NET KULLANIM

Bilgisayarınızı paylaşılan bir kaynağa bağlar veya bağlantısını keser veya bağlantılarınız hakkında bilgi görüntüler.

Yazdırma ayrıca Batch Script içinden NET PRINT komutu ile kontrol edilebilir.

Sözdizimi

PRINT [/D:device] [[drive:][path]filename[...]]

Nerede / D: aygıt - Bir yazdırma aygıtını belirtir.

Misal

print c:\example.txt /c /d:lpt1

Yukarıdaki komut example.txt dosyasını paralel bağlantı noktası lpt1'e yazdıracaktır.

Komut Satırı Yazıcı Kontrolü

Windows 2000'den itibaren, yazıcı ayarlarının tümü olmasa da çoğu, PRINTUI.DLL ve RUNDLL32.EXE kullanılarak Windows'un komut satırından yapılandırılabilir.

Sözdizimi

RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry [ options ] [ @commandfile ]

Mevcut seçeneklerden bazıları şunlardır:

  • /dl - Yerel yazıcıyı silin.

  • /dn - Ağ yazıcı bağlantısını silin.

  • /dd - Yazıcı sürücüsünü silin.

  • /e - Baskı tercihlerini görüntüleyin.

  • /f[file] - Ya inf dosyası ya da çıktı dosyası.

  • /F[file] - / f ile belirtilen INF dosyasının bağlı olabileceği bir INF dosyasının konumu.

  • /ia - inf dosyasını kullanarak yazıcı sürücüsünü kurun.

  • /id - Yazıcı sürücüsü ekleme sihirbazını kullanarak yazıcı sürücüsünü kurun.

  • /if − Install printer using inf file.

  • /ii − Install printer using add printer wizard with an inf file.

  • /il − Install printer using add printer wizard.

  • /in − Add network printer connection.

  • /ip − Install printer using network printer installation wizard.

  • /k − Print test page to specified printer, cannot be combined with command when installing a printer.

  • /l[path] − Printer driver source path.

  • /m[model] − Printer driver model name.

  • /n[name] − Printer name.

  • /o − Display printer queue view.

  • /p − Display printer properties.

  • /Ss − Store printer settings into a file.

  • /Sr − Restore printer settings from a file.

  • /y − Set printer as the default.

  • /Xg − Get printer settings.

  • /Xs − Set printer settings.

Testing if a Printer Exists

There can be cases wherein you might be connected to a network printer instead of a local printer. In such cases, it is always beneficial to check if a printer exists in the first place before printing.

The existence of a printer can be evaluated with the help of the RUNDLL32.EXE PRINTUI.DLL which is used to control most of the printer settings.

Example

SET PrinterName = Test Printer
SET file=%TEMP%\Prt.txt
RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Xg /n "%PrinterName%" /f "%file%" /q

IF EXIST "%file%" (
   ECHO %PrinterName% printer exists
) ELSE (
   ECHO %PrinterName% printer does NOT exists
)

The above command will do the following −

  • It will first set the printer name and set a file name which will hold the settings of the printer.

  • The RUNDLL32.EXE PRINTUI.DLL commands will be used to check if the printer actually exists by sending the configuration settings of the file to the file Prt.txt

Very often than not you can run into problems when running batch files and most often than not you would need to debug your batch files in some way or the other to determine the issue with the batch file itself. Following are some of the techniques that can help in debugging Batch Script files.

Error Messages

To discover the source of the message, follow these steps −

Step 1 − REM out the @ECHO OFF line, i.e. REM @ECHO OFF or :: @ECHO OFF.

Step 2 − Run the batch file with the required command line parameters, redirecting all output to a log file for later comparison.

test.bat > batch.log 2>&1

Step 3 − Search the file batch.log for the error messages

Step 4 − Check the previous line for any unexpected or invalid command, command line switch(es) or value(s); pay special attention to the values of any environment variables used in the command.

Step 5 − Correct the error and repeat this process until all error messages have disappeared.

Complex Command Lines

Another common source of errors are incorrectly redirected commands, like for example "nested" FIND or FINDSTR commands with incorrect search strings, sometimes within a FOR /F loop.

To check the validity of these complex commands, follow these steps −

Step 1 − Insert "command check lines" just before a line which uses the complex command set.

Following is an example wherein the ECHO command is inserted to mark where the output of the first TYPE command ends and the next one starts.

TYPE %Temp%.\apipaorg.reg
ECHO.================================================ TYPE %Temp%.\apipaorg.reg 
| FIND 
"[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\Interfaces\"

Step 2 − Follow the procedure to find error message sources described above.

Step 3 − Pay special attention to the output of the "simplified" command lines: Is the output of the expected format? Is the "token" value or position as expected?

Subroutines

Subroutines generating error messages pose an extra "challenge" in finding the cause of the error, as they may be called multiple times in the same batch file.

To help find out what causes the incorrect call to the subroutine, follow these steps −

Step 1 − Add and reset a counter variable at the beginning of the script −

SET Counter = 0

Step 2 − Increment the counter each time the subroutine is called, by inserting the following line at the beginning of the subroutine

SET /A Counter+=1

Step 3 − Insert another line right after the counter increment, containing only the SET command; this will list all environment variables and their values.

Step 4 − Follow the procedure to find error message sources described above.

Windows Versions

If you intend to distribute your batch files to other computers that may or may not run the same Windows version, you will need to test your batch files in as many Windows versions as possible.

The following example shows how to check for various operating system versions to check the relevant windows versions.

@ECHO OFF
:: Check for Windows NT 4 and later

IF NOT "%OS%"=="Windows_NT" GOTO DontRun
:: Check for Windows NT 4
VER | FIND "Windows NT" >NUL && GOTO DontRun
:: Check for Windows 2000
VER | FIND "Windows 2000" >NUL && GOTO DontRun
:: Place actual code here . . .
:: End of actual code . . .
EXIT

:DontRun
ECHO Sorry, this batch file was written for Windows XP and later versions only

Logging in is possible in Batch Script by using the redirection command.

Syntax

test.bat > testlog.txt 2> testerrors.txt

Example

Create a file called test.bat and enter the following command in the file.

net statistics /Server

The above command has an error because the option to the net statistics command is given in the wrong way.

Output

If the command with the above test.bat file is run as

test.bat > testlog.txt 2> testerrors.txt

And you open the file testerrors.txt, you will see the following error.

The option /SERVER is unknown.

The syntax of this command is −

NET STATISTICS
[WORKSTATION | SERVER]

More help is available by typing NET HELPMSG 3506.

If you open the file called testlog.txt, it will show you a log of what commands were executed.

C:\tp>net statistics /Server