Mutlaka göz atın
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.
<%
Set FSO = CreateObject("Scripting.FileSystemObject")
%>
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 = FSO.BuildPath("C:\Inetpub\wwwroot","images")
%>
YeniYol değişkeninin değeri "C:\Inetpub\wwwroot\images" olur.
<%
Response.Write FSO.BuildPath("Kurshat","Demir")
%>
Çıktısı "Kurshat\Demir" olur.
Sadece tek bir isim kullanmak zorunda değilsiniz. "images" yerine "images\deneme" şeklinde de verebilirsiniz. Bu durumda da çıktı "C:\Inetpub\wwwroot\images\deneme" olacaktır. Bu metodun yaptığı işi aşağıdaki şekilde de yapabilirsiniz.
<%
YeniYol = "C:\Inetpub\wwwroot" & "\" & "images"
%>
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.
<%
YeniYol = FSO.BuildPath("C:\Inetpub\wwwroot\","\images")
%>
Çıktısı "C:\Inetpub\wwwroot\images" 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.
<%
FSO.CopyFile "c:\resim.bmp" , "d:\Resimler\", True
%>
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.
<%
FSO.CopyFile "c:\resim.bmp" , "d:\Resimler\", False
%>
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.
<%
FSO.CopyFile "C:\resim.bmp" , "D:\Resimler\"
%>
ile
<%
FSO.CopyFile "C:\resim.bmp" , "D:\Resimler\resim.bmp"
%>
tamamen aynı işi yapar.
<%
FSO.CopyFile "c:\resim.bmp" , "D:\Resimler\picture.bmp"
%>
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.
<%
FSO.CopyFile "C:\*.*" , "D:\Deneme\"
%>
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.
<%
FSO.CopyFile "C:\Resim.bmp" , "D:\Resimler\Resim.bmp"
'veya
FSO.CopyFile "C:\Resim.bmp" , "D:\Resimler"
%>
ile
<%
Set Dosya = FSO.GetFile("C:\Resim.bmp")
Dosya.Copy "D:\Resimler", True(False)
%>
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.
<%
FSO.CopyFolder "C:\Windows","D:\Deneme\",True
%>
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.
<%
FSO.CopyFolder "C:\Deneme\*","D:\Deneme\"
'veya
FSO.CopyFolder "C:\Deneme\*","D:\Deneme"
%>
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.
<%
FSO.CopyFolder "C:\Windows","D:\WinXP"
%>
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
<%
FSO.CopyFolder "C:\Windows","D:\XYZ\WinXP"
%>
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.
Alıntıdır
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.
<%
Set FSO = CreateObject("Scripting.FileSystemObject")
%>
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 = FSO.BuildPath("C:\Inetpub\wwwroot","images")
%>
YeniYol değişkeninin değeri "C:\Inetpub\wwwroot\images" olur.
<%
Response.Write FSO.BuildPath("Kurshat","Demir")
%>
Çıktısı "Kurshat\Demir" olur.
Sadece tek bir isim kullanmak zorunda değilsiniz. "images" yerine "images\deneme" şeklinde de verebilirsiniz. Bu durumda da çıktı "C:\Inetpub\wwwroot\images\deneme" olacaktır. Bu metodun yaptığı işi aşağıdaki şekilde de yapabilirsiniz.
<%
YeniYol = "C:\Inetpub\wwwroot" & "\" & "images"
%>
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.
<%
YeniYol = FSO.BuildPath("C:\Inetpub\wwwroot\","\images")
%>
Çıktısı "C:\Inetpub\wwwroot\images" 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.
<%
FSO.CopyFile "c:\resim.bmp" , "d:\Resimler\", True
%>
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.
<%
FSO.CopyFile "c:\resim.bmp" , "d:\Resimler\", False
%>
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.
<%
FSO.CopyFile "C:\resim.bmp" , "D:\Resimler\"
%>
ile
<%
FSO.CopyFile "C:\resim.bmp" , "D:\Resimler\resim.bmp"
%>
tamamen aynı işi yapar.
<%
FSO.CopyFile "c:\resim.bmp" , "D:\Resimler\picture.bmp"
%>
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.
<%
FSO.CopyFile "C:\*.*" , "D:\Deneme\"
%>
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.
<%
FSO.CopyFile "C:\Resim.bmp" , "D:\Resimler\Resim.bmp"
'veya
FSO.CopyFile "C:\Resim.bmp" , "D:\Resimler"
%>
ile
<%
Set Dosya = FSO.GetFile("C:\Resim.bmp")
Dosya.Copy "D:\Resimler", True(False)
%>
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.
<%
FSO.CopyFolder "C:\Windows","D:\Deneme\",True
%>
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.
<%
FSO.CopyFolder "C:\Deneme\*","D:\Deneme\"
'veya
FSO.CopyFolder "C:\Deneme\*","D:\Deneme"
%>
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.
<%
FSO.CopyFolder "C:\Windows","D:\WinXP"
%>
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
<%
FSO.CopyFolder "C:\Windows","D:\XYZ\WinXP"
%>
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.
Alıntıdır