Geçenlerde email yolu ile bizimle iletişime geçen bir takipçimiz sürekli belirli bir isimde oluşan Log dosyasını oluşur oluşmaz sildirtecek bir script konusunda yardım istemişti , benzeri durumlar birçok
kullanıcının başına gelebilir mesela kardeşiniz olur olmaz şeyleri indirip kuruyordur ve download klasöründe birşey varsa belirli aralıklarla bunu kontrol ettirip herşeyi sildirtmek isteyebilirsiniz , yine firmalarda günlük log dosyalarının gün sonunda yedekleyip klasörü temizlemek isteyebilirsiniz... VBs de bunu yapabilmek için belirli bir do - Loop döngüsü oluşturabiliriz.
işlemimizi anlaşılır kılmak için şöyle bir senaryo Oluşturalım : herhangi bir sebeple masaüstümüze "a.txt" isminde bir dosya oluşuyor olsun ve bu dosya içerisinde de başkalarının görmesini istemediğimiz bilgiler yeralsın , amacımız Masaüstümüzde otomatik olarak oluşan bu dosyayı oluşur oluşmaz sildirtmek. Bunun için masaüstünün a.txt dosyası için sürekli kontrol ettirlmesi gerekecektir. kullanabileceğimiz parametrelere bir gözatalım. Biz bunlardan Do..Loop döngüsünü kullanacağız.
Do...Loop : Koşul doğru olduğu sürece veya doğru olana kadar döngü devam eder.
While...Wend : Koşul doğru olduğu sürece döngü devam eder
For...Next : Belirtilen sayıda kod çalıştırmak için sayaç kullanır
Do Until : Bir koşul gerçekleşene kadar döngüyü devam ettir
Vbs de do ... Loop döngüsü ile otomatik dosya sildirmek
1. Oluşturacağımız scriptin KUllanıcı isminden bağımsız olarak Herkesin masaüstünü kontrol edebilmesi için Çevre değişkeni kullanacağız sondaki a.txt yerine masaüstünde oluştuğunda otomatik olarak silinmesini istediğiniz başka bir dosya isim ve uzantısı kullanabilirsiniz.
Set WshShell = WScript.CreateObject("Wscript.Shell") vAPPDATA = WshShell.ExpandEnvironmentStrings("%USERPROFILE%\Desktop\a.txt")
2. Do ... Loop döngüsünü if parametresi ile birlikte kullanıyoruz , If (Eğer) döngümüzü aşağıdaki şekilde oluşturuyoruz.
If NOT FSO.FileExists(FileName) Then WScript.Sleep 1000 else fso.DeleteFile vAPPDATA
Üstteki kodlarda scripte Eğer belirtilen dosyayı (a.txt) masaüstünde bulamazssan 1 sn bekle , bulursan sil dedik.
3. Sildikten hemen sonra masaüstünü yenilememiz gerekiyor (F5) çünkü windows 7 gibi sistemlerde silinse bile masaüstüne sağ tıklayıp yenile demeden dosya sanki masaüstündeymiş gibi görünecektir bunu da aşağıdaki kodla sağlıyoruz
WshShell.SendKeys "{F5}"
Kodun sonuna Loop (Döngü) parametresini sürekliliği sağlamak için kullanıyoruz , tüm kodları toparlayacak olursak aşağıdaki gibi bir kodlama ortaya çıkacaktır
Scripti çalıştırdıktan sonra masaüstünüze "a.txt" isimli bir dosya oluşturun anında silindiğini ve masaüstünün yenilendiğini göreceksiniz. peki ama script geri planda çalışırken işlemcimizi nekadar kullanıyor ve hafızada nekadarlık yer kaplıyor göz atalım bunun için klavyemizdeki Ctrl + Shift + Esc tuşlarına basıyoruz ve Açılan görev yöneticisinden scriptimizin kullandığı "Windows script Host" un nekadarlık Cpu ve Bellek kullandığına gözatıyoruz
Üsttede görüldüğü üzere değerler makul seviyede çünkü geri planda her bir sn de bir masaüstünde a.txt dosyasını arıyor ve bulursa siliyor. Üstteki scriptin hazır halini aşağıdaki indirme linkinden edinebilirsiniz , Scripti çalıştırdıktan sonra masaüstünde a.txt isimli bir dosya oluşturup ne olacağını gözlemleyin.
- Sağ tuş yeni menüsüne bat, vbs, ps1 seçenekleri ekle Burada
- Vbs de alınan içinde dosya uzantısı yok hatası Burada
Aşağıdaki dosya işini görecektir
Web Link ...
Ben doyaları değilde script host'un kendisine bi son vermek istiyorum pc her açışımda temp dosyasıyla hata veriyor. cmd üzerinden yapılabilecek herşeyi yaptım yinede hata veriyor
Otomatik Klasör silen script ilave edilmiştir.
Kodları one göre düzenlemen gerekir , yani scriptin yeniden yazılması gerek
Bir sorum var. Dosya değil de bir klasörü silmek istediğimizde ne yapmamız gerekir?
@velociraptor
Denedim çalışıyor. Yazı çok güzel olmuş. Emeğinize sağlık. 🙂
Şakalar için Oldukça ideal
Manyak bir script olmuş. Abi bununla birilerini kızdırcam 😀