İPUCU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

Seçenekler

Fso El Kitabi

06-06-2009 11:25
#1
atlas_tr - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2008
Nereden:
NErDe OLsam BEğeNİRsin
Mesajlar:
2.383
Teşekkür (Etti):
19
Teşekkür (Aldı):
189
Konular:
389
Ticaret:
(0) %
Fso El Kitabi

FileSystemObject (kısaca fso diyeceğiz) ASP�nin dolayısıyla VBScriptin bize sağladığı sihirli bir değnektir. fso ile çalıştığı bilgisayarın üzerindeki tüm dosya ve klasörlere ulaşabilir, onlarla kolayca istediğiniz işlemleri yapabiliriz. Bunun içinde dosyaları kopyalamak, silmek, taşımak, listelemek, text dosyaları düzenlemek, yeni dosyalar oluşturabilmek,dosyaların özelliklerini değiştirebilmek vardır. Yani bilgisayarınızda dosyalar üzrinde yaptığınız işlemlerin aynılarını yapabilirsiniz. fso çok geniş bir konu aslında.Bir çok özelliği ve metodu var. Bunları gruplayarak anlatmak en doğrusu olacaktır. Böylece konu içinde neyin nerede olduğunu bulabilirsiniz. Ben öncelikle fso�nun özelliklerini ve metotlarını anlatacağım. Sonrada dosya işlemleri,klasör işlemleri,sürücü işlemleri olarak anlatacağım.

fso�yu kullanabilmek için önce Set komutu ile bir fso nesnesi oluşturmak gerekir. Bu nesne olmadan işlem yapamayız.



Burda hatırlanması kolay olsun diye nesnemize de fso ismi verdik. Bundan sonraki örneklerde tekrar tekrar bu nesneyi oluşturmayacağız. Ama siz fso gördüğünüz yerde bunun daha önceden yukarıdaki şekilde oluşturulduğunu bilmelisiniz.

· BuildPath

Verdiğiniz bir yol üzerine verdiğiniz isimde yeni yol ekler. Yol ifadesinin geçerli bir yol ifadesi olması gerekmez. String üzerinde işlem yapar.

YeniYol = fso.BuildPath(yol,eklenecek isim)



YeniYol değişkeninin değeri "C:Inetpubwwwrootimages" olur.


Çıktısı "MetinAksu" olur.

Sadece tek bir isim kullanmak zorunda değilsiniz. "images" yerine "imagesdeneme" şeklinde de verebilirsiniz. Bu durumda da çıktı "C:Inetpubwwwrootimagesdeneme" olacaktır. Bu metodun yaptığı işi aşağıdaki şekilde de yapabilirsiniz.



Ama sizin ana ve eklenecek yolunuz fazladan slashlar içeriyorsa yada değişkenler başka yerden alınıyor ve nasıl geldiğini bilmiyorsanız BuildPath sizi bunları temizleme derdinden kurtarır.


Çıktısı "C:Inetpubwwwrootimages" olur.


· CopyFile

Belirtilen bir hedeften yine belirtilmiş bir başka hedefe bir veya daha çok dosyayı kopyalar.

fso.CopyFile KaynakDosya(yada Dosyalar),Hedef,Overwrite

Kaynak kopyalanacak olan dosya yada dosyaların ismidir. Hedef ise ya kopyalanacak olan klasör ismi yada farklı bir isimle kopyalanacak ise yeni dosya ismidir. Overwrite ise eğer kopyalanacak dosya hedefte zaten var ise üzerine yazıp yazılmayacağını belirler. True olursa dosyanın üzerine yazar.False olursa dosyanın zaten var olduğunu söyleyip hata verir. Eğer belirtilmez ise varsayılan olarak True kabul edilir. Kopyalanmak istenen klasör var olmalıdır. Yoksa yol bulunamadı hatası verir.


Bu kod c sürücündeki resim.bmp dosyasını D sürücüsünde ki Resimler klasörüne kopyalar. Eğer dosya var ise üzerine yazar.

Bu kodda C sürücündeki resim.bmp dosyasını D sürücüsünde ki Resimler klasörüne kopyalar. Ama eğer dosya var ise hata verir ve kopyalamaz. Eğer True yada False olarak belirtmezseniz varsayılan olarak True kabul edilir.


ile

tamamen aynı işi yapar.


Bu kod ise C sürücündeki resim.bmp dosyasını D sürücüsündeki Resimler klasörüne picture.bmp ismiyle kopyalar. Bir nevi farklı kaydet olayı yani.

CopyFile metodu ile birden çok dosyayı da aynı anda kopyalayabilirsiniz.



Burda *.* demekle C sürücünde ki tüm dosyaları D sürücüsündeki Deneme klasörüne kopyalıyoruz. Tabi ki burada yeni isim belirtme seçeneğimiz yok. Sadece hedef klasör belirtebiliyoruz.

*.* yerine joker karakterler kullanarak kopyalanacak dosyalar için değişik seçenekler oluşturabiliriz.

*.txt = sadece txt uzantılı olanlar
b*.* = isminin ilk harfi b olanlar
boot.* = ismi boot olan dosyalar
?a*.* = isminin 2. harfi a olan dosyalar
?b?.ini = 3 harfli ve isminin 2. harfi b olan ini uzantılı dosyalar.

NOT : fso ile bu şekilde dosya kopyalayacağınız gibi "fso ile dosya işlemleri" konusunda göreceğiniz gibi GetFile ile dosyayı bir nesneye atayıp "DosyaNesnesi.Copy Hedef" şeklinde de kopyalayabilirsiniz. Ancak bu şekilde tek bir dosya kopyalayabilirsiniz.


ile

aynı işi görür.


· CopyFolder

Belirtilen bir hedef klasörü tüm alt klasörleri ve dosyaları ile birlikte belirtilen bir hedef klasöre kopyalar.

fso.CopyFolder KaynakKlasor,Hedef,Overwrite

KaynakKlasor kopyalanacak olan klasör, Hedef kaynak klasörün kopyalanacağı hedef klasördür. Overwrite ise True veya False değerlerini alarak eğer klasör var ise klasörün üzerine yazılıp yazılmayacağını belirler. True olursa üzerine yazılır. False olursa yazılmaz. Eğer belirtilmez ise varsayılan olarak True kabul edilir.


Bu kod C sürücüsündeki Windows klasörünü tüm içeriğiyle beraber D sürücüsündeki Deneme isimli klasörün içine kopyalar.Hedef belirtilirken sonunda slash kullanıldığına dikkat edin. Eğer slash kullanmazsanız Windows klasörünün içeriği(kendisi değil) Deneme klasörüne kopyalanır.



Bu şekilde C sürücüsündeki Deneme klasörünün sadece alt klasörleri D sürücüsündeki Deneme klasörüne kopyalanır.

Eğer hedef olarak verdiğiniz klasör yok ise oluşturulur ve kaynak klasörün içeriği buraya kaydedilir. Yani farklı kaydetme olayı. Mesela D sürücüsünde WinXP isimli bir klasör yok diyelim.

Bu durumda C sürücüsündeki Windows klasörü D sürücüsüne WinXP ismiyle kaydedilir. Hedef klasör belirtilirken yine slash kullanılmadığına dikkat edin.

Eğer XYZ klasörü yoksa

derseniz hata alırsınız. fso sizin için bir XYZ klasörü oluşturup bunun içine WinXP�yi oluşturmaz. Ama eğer XYZ klasörü varsa WinXP klasörü yoksa bu oluşturulur ve kaynak klasör içeriği bunun içine kopyalanır. Eğer WinXP klasörü de varsa bu durumda, yukarda belirtildiği gibi, sonda slash kullanılıp kullanılmadığına bağlı olarak kaynak klasör aynı isimle klasör yapısı korunarak veya sadece içeriğiyle bu klasör içine kopyalanır.

NOT : fso ile bu şekilde klasör kopyalayacağınız gibi "fso ile klasör işlemleri" konusunda göreceğiniz gibi GetFolder ile klasörü bir nesneye atayıp "KlasorNesnesi.Copy Hedef" şeklinde de kopyalayabilirsiniz. Ancak bu şekilde tek bir klasör kopyalayabilirsiniz.


ile

aynı işi görür.


· CreateFolder

Adından anlayacağınız gibi verdiğiniz klasör içinde verdiğiniz isimde boş bir klasör oluşturur.

fso.CreateFolder YeniKlasor

True/False şeklinde bir argümanı yoktur. Eğer oluşturulmak istenen klasör varsa hata verir.


C sürücüsünde Deneme isimli bir klasör oluşturur.


Eğer C sürücünde Metin isimli bir klasör varsa içine Aksu isminde bir klasör oluşturur. Eğer yoksa yol bulunamadı hatası verir.



System32 klasörü içinde MetinAksu isminde bir klasör oluşturur.


· DeleteFile

Belirttiğiniz bir dosya yada dosyaları siler.

fso.DeleteFile Dosyaİsmi



Siz direk dosya ismi yerine fso/?temel#CopyFile"> color=#c79f03 CopyFile konusunda işlediğimiz gibi joker karakterler kullanarak birden fazla dosyayı silebilirsiniz.



C sürücüsünde ki Deneme klasörü içindeki tüm dosyaları siler.

*.txt = sadece txt uzantılı olanlar
b*.* = isminin ilk harfi b olanlar
boot.* = ismi boot olan dosyalar
?a*.* = isminin 2. harfi a olan dosyalar
?b?.ini = 3 harfli ve isminin 2. harfi b olan ini uzantılı dosyalar.

NOT : Siz bu şekilde dosya silebileceğiniz gibi GetFile ile oluşturduğunuz dosya nesnesinin Delete yöntemiyle nesnenin tuttuğu dosyayı silebilirsiniz.



Böylece Resim.bmp dosyası silinmiş oldu.


· DeleteFolder

Verdiğiniz bir klasörü tüm alt dosya ve klasörleri ile birlikte siler.

fso.DeleteFolder Klasörİsmi

Klasör ismi sonunda yada / işareti kullanmamalısınız.Yoksa hata alırsınız.


C sürücüsündeki Deneme klasörünü tüm içeriğiyle beraber siler.

NOT : Siz bu şekilde klasör silebileceğiniz gibi GetFolder yöntemiyle oluşturduğunuz klasör nesnesinin Delete metodu ile de nesnenin tuttuğu klasörü silebilirsiniz.


C sürücüsündeki Deneme klasörü silinmiş oldu.


· DriveExists

Belirttiğiniz sürücünün var olup olmadığını test eder. Eğer var ise True yoksa False değeri döndürür.

fso.DriveExists("Sürücü Harfi")

Verilecek değer Windows�un sürücüleri isimlendirme kurallarına uymalıdır. Yani bir sürücüyü ifade etmek için harf kullanmalısınız. Aksi takdirde çıktı olarak her zaman False değeri döndürür.


Ekrana True yazdıracaktır.

Eğer hard diskinizi paramparça etmediyseniz False değeri döndürecektir. olmalıdır.

fso.GetDriveName("Yol")



Hepsinin çıktısı "z:" olur.



Çıktısı "C:" olur.

NOT : Siz bu şekilde bir yol ifadesi için sürücü harfini aldığınız gibi GetFile ile oluşturulmuş dosya nesnesinin veya GetFolder ile oluşturulmuş klasör nesnesinin Drive özelliği ile de sürücü harfini alabilirsiniz. Ama bu yöntemde yol ifadesi dolayısıyla dosya veya klasör geçerli, yani var olmalıdır.


Çıktısı "C:" olur.


Çıktısı "C:" olur.



· GetExtensionName

Verdiğiniz string içinde en son bileşenin uzantısını verir. Verdiğiniz stringin geçerli bir yol ifadesi olması yada dosya uzantısının geçerli bir uzantı olması gerekmez. Kısacası verdiğiniz string içindeki son noktadan sonraki kısmı verir.

fso.GetExtensionName("string")


Çıktısı "asp"


Çıktısı "metin"


Çıktısı "hilmi"


Çıktısı "zikri"


· GetFile

Belirttiğiniz bir dosya için üzerinde işlemler yapılabilen bir dosya nesnesi oluşturur. Dosya geçerli olmalıdır.

Set Dosya = fso.GetFile("Dosya Yolu")

Bu konunun ayrıntılarını "fso ile dosya işlemleri" konusuna bırakıp geçiyoruz.


· GetFileName

Verdiğiniz bir string ifadesi içinde ki en son bileşenin uzantısıyla beraber ismini verir. Eğer uzantı yoksa sadece ismini verir. fso/?temel#GetBaseName"> color=#c79f03 GetBaseName dosya ismini veriyor, uzantısını vermiyordu. GetFileName uzantısıyla beraber dosya ismini verir. Verdiğiniz stringin geçerli bir yol ifadesi olması gerekmez. Bu yöntemde string üzerinde işlem yapar.

fso.GetFileName("İfade")



Çıktıları "index.asp" olur.



Çıktıları "index" olur.


· GetFileVersion

Exe, dll gibi dosya versiyonu bilgisini taşıyan dosyalarda dosyanın sürüm numarasını verir. Verilen dosya yolu ifadesi geçerli olmalıdır. Eğer yol geçerli değilse yada dosya sürüm bilgisi taşımıyorsa boş değer döner.

fso.GetFileVersion("Dosya Yolu")



Benim sistemimde çıktısı "2.0.0.2" şeklinde.



Çıktı "5.5.9.9" şeklinde.


· GetFolder

Belirttiğiniz bir klasör için üzerinde işlemler yapılabilen bir klasör nesnesi oluşturur. Klasör geçerli olmalıdır.

Set Klasor = fso.GetFolder("Klasör Yolu")

Bu konunun ayrıntılarını "fso ile klasör işlemleri" konusuna bırakıp geçiyoruz.


· GetParentFolderName

Verdiğiniz bir yol ifadesi için o yolun en son dosyasının veya klasörünün içinde bulunduğu klasör ismini döndürür. Yol ifadesinin geçerli olması gerekmez.

fso.GetParentFolderName("Yol")


Her ikisinin de çıktısı "C:MetinAksu" olur.


Üçünün de çıktısı "C:Metin" olur.



Çıktıları "GiresunMetin" olur.

Siz bu şekilde bir yol ifadesi için ana dizini aldığınız gibi GetFile ile oluşturulmuş dosya nesnesinin veya GetFolder ile oluşturulmuş klasör nesnesinin ParentFolder özelliği ile de ana dizini alabilirsiniz. Ama bu yöntemde yol ifadesi dolayısıyla dosya veya klasör geçerli, yani var olmalıdır.


Çıktısı "Ceneme" olur.


Çıktısı "Ceneme" olur.


· GetSpecialFolder

Vereceğiniz 0,1 veya 2 sayısı için Windows özel dizinlerini döndürür. Bu üç sayı dışında argüman kabul etmez.

fso.GetSpecialFolder(sayı)

0 = "C:WINDOWS"
1 = "C:WINDOWSsystem32"
2 = "C:WINDOWSTemp"


Çıktısı "C:WINDOWSsystem32" olur.


· GetTempName

Geçici bir dosya için .tmp uzantılı rastgele bir dosya adı üretir. Dosya ismi başında "rad" sözcüğü bulunur. Bu rastgele uzantılı dosya oluşturulmaz. Sadece dosya adı üretir. Siz bu ismi CreateTextFile ile dosya oluştururken kullanabilirsiniz.

fso.GetTempName



Çıktısı "A9932" kısmı her seferinde değişmek kaydıyla "radA9932.tmp" gibi olur.


· MoveFile

Verdiğiniz bir veya daha fazla dosyayı belirttiğiniz klasöre taşır.

fso.MoveFile KaynakDosya(lar), Hedef

Kaynak Dosya tek veya joker karakterle belirlediğiniz birden çok dosya, Hedef ise bunların taşınacağı klasördür. Eğer taşımaya çalıştığınız dosyalar hedef klasörde zaten var ise hata verir ve taşınmaz.


Her iki kodda C sürücüsündeki tüm dosyaları Deneme klasörüne taşır.


C sürücüsündeki "deneme.txt" dosyasını "Deneme" klasörüne aynı isimle taşır.


C sürücüsündeki "deneme.txt" dosyasını "Deneme" klasörüne index.asp ismiyle taşır. Yani farklı kaydetmiş olursunuz.

fso/?temel#CopyFile"> color=#c79f03 CopyFile konusunda okuduğunuz gibi joker karakterleri kullanarak taşınacak dosyalar için farklı seçenekler oluşturabilirsiniz.


· MoveFolder

Bir veya daha çok klasörü vereceğiniz bir hedef klasöre taşır.

fso.MoveFolder TaşınacakKlasör(ler), Hedef

Bu kodun kullanımında birkaç küçük ayrıntı var. Örneklerle görelim.



a klasörünü aynı dizindeki b klasörü içine taşır. Bu işlem için taşınacak kaynak klasörü belirtirken sonuna slash() koymuyoruz. Koyarsak yol bulunamadı hatası verir. Taşınacak klasör için bu sınırlama yok. "Ceneme" yada "Ceneme" şeklinde yazabilirsiniz.
Kullanıcı İmzası


Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı