Daha önceki konularımızda .vbs ile nasıl kopyalama yapılacağına dair script örnekleri paylaşmıştık Burada gel gelelim eğer kopyalanacak dosyanın yolunu bellirtmezssek hata verecektir
gelin bunu bir örnek yardımı ile görelim ;
1. Masaüstümde "deneme" isimli bir klasör oluşturdum
2. İçerisine de "a.txt" isimli bir dosya kopyaladım
3. bu "a.txt" isimli dosyayı "C:\" dizinime kopyalamak istiyorum
Üstteki linkte verdiğimiz örneği kullanırsak
Const OverwriteExisting = TRUE Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CopyFile "a.txt", "C:\" , OverwriteExisting Set FSO = nothing
Alacağımız sonuç aşağıdaki şekilde olacaktır
Görüldüğü gibi Dosya bulunamadı hatasını alırız , pekala bizde tam yol belirtelim , "a.txt" dosyasını sağ tıklayalım ve özelliklerden yolu bulalım aşağıdakini gösteriyor
C:\Users\velociraptor\Desktop\deneme\a.txt
Şimdi Kodu bu yola göre düzenlersek aşağıdaki şekli alacaktır
Const OverwriteExisting = TRUE Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CopyFile "C:\Users\velociraptor\Desktop\deneme\a.txt", "C:\" , OverwriteExisting Set FSO = nothing
Busefer hatasız kopyaladı , iyide bir başkasının bilgisayarında kullanıcı ismi farklı olacağından tekrar kodu düzenlemesi gerekir , bundan kaçınmak için Buradaki yöntemden bahsetmiştik eğer mevcut dizini otomatik bulan yöntemlerden birini kullanırsak Böylece script hem editlenme gereği olmadan herkesin bilgisayarında çalışacak hemde hata vermeyecektir. Scripti aşağıdaki şekilde düzenliyoruz
Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") Dim strScriptPath : strScriptPath = Replace(WScript.ScriptFullName, "\" & WScript.ScriptName, "") FSO.CopyFile strScriptPath& "\a.txt", "C:\" Set FSO = nothing
Üstteki kod UAC si açık olan bilgisyarlarda c:\ dizinine yazamayacak ve aşağıdaki hatayı verecektir
Bu hatayı da bertaraf edip her sistemde sorunsuz çalışmasını sağlamak için kodu aşağıdaki şekle getiriyoruz
'created by Velociraptor (www.sordum.net) 17.03.2015 If WScript.Arguments.length =0 Then Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "wscript.exe", Chr(34) & _ WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1 Else '-------------- Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") Dim strScriptPath : strScriptPath = Replace(WScript.ScriptFullName, "\" & WScript.ScriptName, "") FSO.CopyFile strScriptPath& "\a.txt", "C:\" Set FSO = nothing '-------------- 'End of UAC workaround code End If
Artık a.txt isimli dosyamız hangi klasör içerisinde olursa olsun yanında oluşturulacak ve içerisinde üstteki kodun yeraldığı .vbs scriptimiz ile C:\ dizinine sorunsuz kopyalanacaktır.
Mrb, scriptpathi bu sekilde alabiliyoruz lakin varolan bir dosyada mesela php.ini icerisnde yer alan path yolunu degistirmek icin o dosyayı acıp extension_dir="bla\blaba\php.exe" gibi bir ifadede bu pathi tırnak icerisne nasıl yazdırabiliriz. Tesekkur ederim simdiden