Visual basic scriptler ile çalışırken sıkça karşılaşılan sorunlardan biride kullanılan parametrelerden bir veya birkaçının boşluk içermesidir , mesela masaüstümüzde isminde boşluk olan bir klasör oluşturalım
yani ; run.vbs (1) çalıştırıldığında "Yeni Klasör" (2) içerisindeki sordum.vbs (3) ü çalıştırmaktadır, eğer klasör isminde boşluk olmasa aşağıdaki kodla bunu yapabilirdik
Dim oShell Set oShell = WScript.CreateObject ("WScript.Shell") oShell.run "C:\Users\velociraptor\Desktop\Yeni\sordum.vbs",0 ,true Set oShell = Nothing
Lakin "Yeni Klasör" isminde boşluk olduğu için üstteki kodu verildiği şekli ile kullanırsak aşağıdaki hatayı alırız.
Peki ama ilk kodu nasıl düzenleyelimki klasör ismindeki bu boşluğu da görebilsin , gelin isterseniz kuralları bir hatırlayalım:
1. WScript.Echo "sordum.net" - sordum.net olarak çıktı verir.
2. WScript.Echo "Tek tırnak "" sordum.net" - Tek tırnak"sordum.net olarak çıktı verir
Üsttekinin anlamı : Eğer başında ve sonunda tırnak işareti olsun istiyorsak hem başında hemde sonunda çift tırnak kullanmalıyız.
3. WScript.Echo """sordum.net""" - "sordum.net" şeklinde görüntülenecektir.
Peki ama bir parametre içerisinde birden fazla tırnak işareti kullanmamız gerekiyorsa ne yaparız ? elbette üstteki şekilde üçerli tırnak işaretleri kullanılabilir fakat karışıklık ihtimalide artacaktır o nedenle gelin bir fonksiyon yazalım ve bizim için tırnak sayısını bu fonksiyon ayarlasın
Function qq(strIn) qq = Chr(34) & strIn & Chr(34) End Function WScript.Echo qq("sordum.net")
Üstteki script kullanıldığında - "sordum.net" şeklinde bir çıktı verecektir.
İlk örneğimize geri dönecek olursak tüm bu bilgiler ışığında masaüstümüzde yeralan "Yeni klasör" içerisindeki "sordum.vbs" yi çalıştırmak için üç farklı script kodlaması yapabiliriz.
1. Tırnak işaretleri ile
Dim oShell Set oShell = WScript.CreateObject ("WScript.Shell") oShell.run """C:\Users\velociraptor\Desktop\Yeni klasör\sordum.vbs""",0 ,true Set oShell = Nothing
2. Chr(34) ile
Dim oShell Set oShell = WScript.CreateObject ("WScript.Shell") oShell.run Chr(34) & "C:\Users\velociraptor\Desktop\Yeni klasör\sordum.vbs"& Chr(34) ,0 ,true Set oShell = Nothing
3. fonksiyon ile
Function qq(strIn) qq = Chr(34) & strIn & Chr(34) End Function Dim oShell Set oShell = WScript.CreateObject ("WScript.Shell") oShell.run qq("C:\Users\velociraptor\Desktop\Yeni klasör\sordum.vbs") ,0 ,true Set oShell = Nothing
ve bunlardan her biri çalıştırıldığında isminde boşluk olan Yeni klasör içerisindeki "sordum.vbs" sorunsuz bir şekilde çalışacak ve aşağıdaki şekilde çıktı verecektir.
Üstteki örnekleri içeren tüm vbs scriptlerini aşağıdaki indirme linkinden indirip kendi masaüstünüzde deneyebilirsiniz.
- Parametre hatalı sorunu ve çözümü Burada
- Görev zamanlayıcısı ile onaysız registry kaydı çalıştırın Burada
30 Nisan 2017 Tarihli başlık güncellendi.
Rica ederim , Selamlar.
Çok teşekkür ederim. bana yardımcı olacak bir paylaşım olmuş, harikasınız.
Gerim bildirim için teşekürler Ferit , selamlar
Denedim aynen dediğiniz gibi hatalı ve diğerleri kusursuz elinize sağlık çok öğretici. Eşsiz bilgiler için sonsuz teşekkürler.