Vbs ile bir klasörü tüm alt klasörleri ile birlikte taşımak


vbs ile klasör ve tüm içeriğini taşımak
Geçenlerde forumda bir arkadaş bu konu ile ilgili bir soru sorunca sitemizde verdiğimizi düşündüğümüz konu ile ilgili vbs kodlarını paylaşmadığımızı farkettim , daha önceki başlıklarımızda vbs ile bir klasör

içeriğini kopyalamak ve Bir dosyanın bat veya vbs komutları ile taşınması konularında bilgiler vermiştik bir klasörün tüm içeriği ile birlikte (Alt klasörleri dahil) taşınması çokça istenen bir durumdur "folder.Move" komutu ile gerçekleştirilen bu işlemi isterseniz bir iki örnek yardımı ile açıklamaya çalışalım.

Masaüstümde sordum isminde bir klasör olsun amacımız bu klasörü tüm içeriği ile birlikte "C:\" dizinine taşımak , ilk oluşturacağımız kod aşağıdaki şekilde olacaktır

set fs = CreateObject("Scripting.FileSystemObject")
set folder = fs.GetFolder("C:\Users\velociraptor\Desktop\sordum")
folder.Move "C:\"

Üstteki kodda aşağıdaki yerleri kendinize göre düzenleyebilirsiniz
fs.GetFolder("C:\Users\Kullanıcı ismi\Desktop\Klasör ismi")
folder.Move "Taşınacağı yer" , elbette herdefasında kullanıcı ismini editlemek zor gelebilir her bilgisyarda kullanıcı ismi farklı olacağından çalışmayacaktır ,bunun için scriptte mevcut dizin tanımlaması yapılarak taşınacak klasörün yanında çalıştırıldığında belirtilen konuma taşıması sağlanabilir bu durumda kodlar aşağıdaki şekli alacaktır

set fs = CreateObject("Scripting.FileSystemObject")
sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
set folder = fs.GetFolder (sCurPath & "\sordum")
folder.Move "C:\"

Elbette bu üstteki kodların taşınacak klasörün yanından çalıştırılması gerekmektedir , çünkü script çalıştığında yanında örneğimizdeki "Sordum" klasörünü aramakatadır. Vbs de mavcut dizin işlemleri için bakınız , elbette scripti bu hali ile bırakırsak bize herhangi bir bilgi sunmayacaktır dosya sessiz sedasız taşınacak veya bulamadığı zaman hata verecektir gelin isterseniz scripte birde hata kontrolü ekleyim bunun için "On Error Resume Next" kodundan faydalanacağız bu kod ile scripte şunu diyoruz : eğer bir hata ile karşılaşırsan çalışmayı yarıda kesmeden bir sonraki satırdan devam et , elbette kodu hata alırsa veya taşıma başarılı olursa da bilgi verecek şekilde düzenleyebiliriz şöyleki:

On Error Resume Next
--- vbs kodu buraya gelecek ---
If Err Then
WScript.Echo "Hata  : " & Err.Number
Else 
WScript.Echo "İşlem tamamlandı"
End If

Üstteki kodlarla vbs çalıştığında eğer bir hata iletisi olursa bunu hata numarası ile bildirecek , taşıma başarılı olursa da "İşlem tamamlandı" mesajı verecektir. mesela aşağıda tipik bir erişim yok hatasını görüyoruz

Erişim yok

peki bunun Erişim yok hatası olduğunu nerden anladın derseniz Vbs hata kodlarına baktım Burada , eğer scripte Yönetici yetkileri ile çalışma kodları eklemek isterseniz Buradaki yazımıza gözatınız , üstteki scriptin kontrol kodları eklenmiş hazır halini aşağıdan indirebilirsiniz. Aşağıdaki scriptin şöyle özellikleri var :

1. MoveFile yönteminin aşağıdaki Notta belirtilen kısıtlamasını kaldırmak için (mevcut dosyanın üzerine yazdırmak için) eğer hedef dosya mevcut ise script , üstüne kopyalama yapıp kaynak dosyayı silmektedir buda dolaylı yoldan bir üzerine yazdırmadır

2. Script hata kontrolü yapmakta fakat hata numarası yerine hatanın kendisi hakkında bilgi vermektedir (Err.Number yerine Err.Description kullanıldı) ayrıca başarılı kopyalama bilgisi de görüntülüyor

NOT: a) VBScript MoveFile yöntemi sadece hedef Dosya/klasör mevcut değilse düzgün çalışır yoksa hata verir yani ; eğer masaüstümüzde yeralan "sordum" isminde bir klasör varsa ve bunu taşıyacağımız yer olan "C:\sordum" dizininde zaten bu isimde bir dosya/klasör varsa script hata verecektir - Üzerine yazmayacaktır  b) bir diğer Kısıtlama Bu yöntem sadece Aynı dizinde taşımaya izin verir mesela C dizininden D dizinine birşey taşımaya kalkarsanız HATA verir (Microsoft Tam saçmalamış)

Download


Yorum Ekle

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Captcha