Visual basic script dili (vbs) ile windows işletim sisteminde birçok şey yapmak mümkündür gel gelelim bazen tek satırlık bir bat komutu vbs deki karmaşık kodlamanın yerini alabilir , elbetteki script dillerini
kullanırken bazen birinin sağladığı kolaylıktan faydalanmak için kodlarını diğerinin içerisinde kullanmak oldukça avantaj sağlayabiliyor , mesela vbs de çevre değişkenlerini kullanmaya kalkarsanız ilave kodlar kullanmak zorundasınızdır Burada oysa mesela aşağıdaki kodu bat dosyası olarak kaydedersek anında "C:\Users\{username}\AppData\Roaming" kısmını açacaktır
start %APPDATA%
peki vbs de uzun uzadıya kod yazığ çevre değişkeni tanımlamaktansa direkt bu .bat kodlarını kullansak ne olur ? oldukça güzel olur hem bat kodları çalışırken ilk önce siyah bir ekran beliriyor komut yürütülüyor ve saniyelik bir hızla komut penceresi kapanıyor vbs de istersek bu siyah ekranının görünmemesini de sağlayabiliriz nasılını Burada açıklamıştık. üsteki bat komutlarını vbs ile uygulamaya kalkarsak aşağıdaki gibi olacaktır
Dim oShell Set oShell = WScript.CreateObject ("WScript.Shell") oShell.run "cmd /k start %APPDATA%" , 1 , True Set oShell = Nothing
Birileri diyecektirki ee ben neden üstteki tek satırla yaptığım işin aynsını vbs de 3 satırla yapayım ? işte işin püf noktası da tam olarak burada:
VBS içerisinden .bat komutları çalıştırmanın avantajları
1. Cmd de bazen neyaparsak yapalım anlık görünüp kaybolan o pencereyi engeleyemeyiz oysa vbs bize bu imkanı sunmaktadır
2. Bazı bat komutları mutlaka üzerlerine tıklayınca yönetici olarak çalıştır demeyi gerektirir , oysa vbs ile bu engelde kolayca aşılabilir
3. Bat kodları Kullanıcı ile diyalog için farkı diyalog pencereleri sunmazken vbs de tıklamak için buton girilecek boşluk seçim ekranı... gibi kolaylıklar vardır.
En üstteki örneğimizden devam edelim evet vbs ile bat kodu çalıştırdık ama cmd penceresi açık kaldı
O halde vbs içinde bat kullanmanın ilk faydası olan cmd penceresini görünmez yapalım bunun için aşağıdaki kodları kullanabiliriz
Dim oShell Set oShell = WScript.CreateObject ("WScript.Shell") oShell.run "cmd /k start %APPDATA%" , 0 , True Set oShell = Nothing
Üstteki kodlar kullanıldığında karşımıza asla bir cmd penceresi gelmeden bat kodunu uygulamış olduk. gelelim 2. maddede sözedilen faydasına ben Boot sürem hızlansın diye açılış dosyalarımı defrag ettirmek istesem bat dosyasına aşağıdaki kodları yazarım
cmd /k defrag c: -b
lakin aşağıdaki resimde de gördüğünüz gibi benden illada yönetici yetkisi istiyor , bu bat dosyasını acemi bir kullanıcıya yollasam tıklasa çalışmıyor diyecektir
İkinci maddede belirttiğimiz faydası burada ortaya çıkıyor kodları aşağıdaki şekilde düzenlersek ve buradaki şekilde yönetici olarak çalıştırma kodlarını eklersek içerisinde Cmd yi admin yetkilerinde çalıştırıp komutu uygulamış oluruz
Dim oShell Set oShell = WScript.CreateObject ("WScript.Shell") oShell.run "cmd /k defrag c: -b" ,1 , true
üstte bahsettiğimiz üçüncü faydaya gelirsek ; kullanıcıya mesela istediği isimde bir klasör oluşturtalım ve klasör ismini kullanıcı kendisi girsin bunu şık bir biçimde uygulayabilmek için vbs içerisinden bat kodu çalıştırabiliriz bunun için aşağıdaki kodları kullanacağız
DIM objShell set objShell = wscript.createObject("wscript.shell") foldername = inputbox ("Klasör ismi giriniz: ") iReturn = objShell.Run("CMD /C md " & foldername & chr(34), 1 , True)
Kodları vbs haline getirip çalıştırdığımızda aşağıdaki gibi kullanıcının istediği ismi yazabileceği bir pencere gelecek ve isim yazıldıktan sonra "Tamam" butonuna basıldığında klasör oluşacaktır.
Örnekler çoğaltılabilir fakat işin temel mantığı her iki script dilinin kolaylıklarından faydalanıp Hibrit diye tabir edilen kodlama yapmaktır buda bize her iki script dilinin kolaylıklarını birarada kullanma imkanı vermektedir.
tarkan hocam örnek veriyorum bir mp4 vbs üzerine sürüklesem mp3 yapamaz mıyım bu sekilde sürükleme yöntemiyle bat dosyasındaki gibi
Normalde Vbs içierisinden bat scriptleri sorunsuz çalıştırlabilir. KOşulu yolunu doğru belirtmektir.
Bir şey soracağım;
Sonlandırılmayan (sonsuza kadar devam eden) komutları çalıştırmıyor. Mesela komut isteminde yapılan matrix efektini çalıştırmıyor. Dosyayı bilgisayara kaydedip onun konumunu yazarak çalıştırmayı da istemiyorum. Ne yapmam gerek?
Amacını tam olarak anlayamadım , üstteki örnekte yapamadığın şey nedir ?
hocam merhaba ben vbs den cmd dosyasını açtım fakat hemen kapanmasını istiyorum bu yazdıklarınızdan pek anlayamadım yazdıgım kod
iseSet WshShell = WScript.CreateObject ("WScript.Shell")
WshShell.Run ("C:\WINDOWS\system32\cmd.exe")
bu açılan cmd yi nasıl kapatabilirim ?
hocam merhaba ben muhammed harun şeker artık tanıdınz 😀 hocam benim size bahsettiğim vscript dosyalarını nasıl şifrelendiğini örenmem lazım çok acil lütfen bir el atın yaw bilgi paylaştıkça güzeldir ?
@yusuf usta: bunun için script yazmak gerek , çalıştırmak nispeten daha kolay .
Merhaba Bir Programı sayılı sürede çalıştırıp sonra kapatmak nasıl oluyor?Teşekkürler..
Karma kodlama birçok yönden işimizi aşırı kolaylaştırıyor , birnevi kestirmeden sonuca ulaşmak , yorumunuz için teşekürler
etkileyici bir yazı olmuş. aklımıza gelmeyen yöntemler. teşekkürler.