Çevre değişkenleri (Environment variables),Bilgisayardaki dinamik objelerdir ve mesela Ortam değişkenleri, programların dosyaları hangi dizine yükleyeceğini, geçici dosyaları nerede depolayacağını
%appdata% %commonprogramfiles% %local% %localappdata% %programfiles% %temp% %userprofile%
Diyelimki siz bir script/program yardımı ile aşağıdaki dizinde işlem yapacaksınız:
C:\Users\velociraptor\AppData\Roaming
Üstte kullanıcı adı olarak velociraptor geçiyor yani scripte yol olarak üsttekini kullanamayız çünkü bir başkasının bilgisayarında kullanıcı adı farklıdır , işte bu gibi durumlar için %appdata% değişkeni kullanılır , yani klavyedeki Windows ve R tuşlarına birlikte basıp açılan çalıştır boşluğuna %appdata% yazıp enter e basıldığında her bilgisayarda bir üstteki yer açılacaktır ve fakat kullanıcı adı komutun kullanıldığı bilgisayara göre değişecektir.
İşte .bat scriptlerinde bolca kullanılan bu değişkenlerin .vbs de kullanımı ile ilgili birkaç örnek vereceğiz işlem yapacağımız dizin aşağıdadır:
C:\Users\velociraptor\AppData\Roaming\Mozilla\Firefox\Profiles
Bu üstteki dizine bir dosya , bir klasör kopyalayıp sileceğiz ve birde dizini direkt olarak açan bir script kullanacağız , aşağıdaki .vbs scriptleri bulundukları klasörde yeralan "oku.txt" dosyasını ve "deneme" isimli klasörü üstteki yola kopyalayacak ve sileceklerdir , sizde bir klasör içerisinde bunları oluşturup sırası ile aynı yerde oluşturacağınız aşağıdaki .vbs scriptlerini deneyebilirsiniz.
1.vbs de Çevre değişkeni kullanarak dosya kopyalama
' Edited by Velociraptor ' www.sordum.net Option Explicit Dim oFSO, strAppData, objShell Set objShell = CreateObject("WScript.Shell") Set oFSO = CreateObject("Scripting.FileSystemObject") objShell.CurrentDirectory = oFSO.GetParentFolderName(WScript.ScriptFullName) strAppData=objShell.ExpandEnvironmentStrings("%APPDATA%\Mozilla\Firefox\Profiles\") & "\" oFSO.CopyFile "oku.txt", strAppData, True Set objShell = Nothing Set oFSO = Nothing
2.vbs de Çevre değişkeni kullanarak dosya Silme
' Edited by Velociraptor ' www.sordum.net Dim objFSO, copyFile, vSystemDrive Set WshShell = WScript.CreateObject("Wscript.Shell") vAPPDATA = WshShell.ExpandEnvironmentStrings("%APPDATA%\Mozilla\Firefox\Profiles\") Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.DeleteFile(vAPPDATA & "\oku.txt")
Şu aşağıdaki iki satır ile çevre değişkenlerini tanımlıyoruz.
Set WshShell = WScript.CreateObject("Wscript.Shell") vAPPDATA = WshShell.ExpandEnvironmentStrings("%APPDATA%\Mozilla\Firefox\Profiles\")
Bu üstteki tanımlamadan sonra Kodlama içerisinde vAPPDATA kullanıldığında direkt olarak tanımladığımız "%APPDATA%\Mozilla\Firefox\Profiles\" parametresi devreye girecektir.
3.vbs de Çevre değişkeni kullanarak Klasör kopyalama
' Edited by Velociraptor ' www.sordum.net Option Explicit Dim oFSO, strAppData, objShell Set objShell = CreateObject("WScript.Shell") Set oFSO = CreateObject("Scripting.FileSystemObject") objShell.CurrentDirectory = oFSO.GetParentFolderName(WScript.ScriptFullName) strAppData=objShell.ExpandEnvironmentStrings("%APPDATA%\Mozilla\Firefox\Profiles\") & "\" oFSO.CopyFolder "deneme", strAppData, True Set objShell = Nothing Set oFSO = Nothing
4.vbs de Çevre değişkeni kullanarak Klasör Silme
' Edited by Velociraptor ' www.sordum.net Dim objFSO, copyFile, vSystemDrive Set WshShell = WScript.CreateObject("Wscript.Shell") vAPPDATA = WshShell.ExpandEnvironmentStrings("%APPDATA%\Mozilla\Firefox\Profiles\") Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.DeleteFolder(vAPPDATA & "\deneme")
5.vbs de Çevre değişkeni dizinini açalım
' Edited by Velociraptor ' www.sordum.net Option Explicit Dim objWShell Set objWShell = WScript.CreateObject("WScript.Shell") Dim appData appData = objWShell.expandEnvironmentStrings("%APPDATA%") CreateObject("WScript.Shell").Run "%APPDATA%\Mozilla\Firefox\Profiles\"
Böylece en önemli çevre değişkenlerinden birinin .vbs içinde kullanımını görmüş olduk. Üstteki tüm dosyaları ve bir adet bonusu Aşağıdaki linkten indirebilirsiniz. Eğer Powershell de Çevre değişkeni kullanımı ile ilgili bilgi almak istiyorsanız Buradaki başlığımıza gözatabilirsiniz.
- Sağ tuşa vbs veya bat scripti eklemek Burada
- Kullanıcıya seçenek sunan .bat scripti Burada
- Bat dosyasında mevcut dizin işlemleri Burada
- Bat dosyası ile diskpart komutlarını sıralı uygulatmak Burada
- vbs ile Windows version numarasını bulalım Burada
- Script ile bir işlemi (Process) sonlandıralım Burada
14 Ağustos 2014 Tarihli başlık güncellendi
Mesela bunun gibi:
WScript.Echo Replace(WScript.ScriptFullName, WScript.ScriptName, "")
WshShell.Run & sCurPath & "\QemuBoot.exe""", 1, True
Tabi bu çalışmıyor... 🙂
Üstat sizin verdiğiniz örnekte yolu belirtilerek diskpart.exe çalıştırılıyor ayrıca bir dosya oluşturuluyor...
Örneklere göre oluşturulan dosyanın yolunu girmeye gerek yok, bu tamam ancak; ben direkt exe çalıştırmak istiyorum...
Sayfadaki örnekleri inceledim ama bir türlü yapamadım...
Selam Abdullah , bunu yapabilmek için Current directory (Geçerli dizin) parametrelerini kullanmamız gerekecektir.
Web Link ...
Üstat vbs dosyasının olduğu geçerli dizindeki herhangi bir exe dosyasını nasıl çalıştırabiliriz?
Örneğin a.exe dosyası ve vbs dosyası aynı dizin içinde; vbs dosyasında a.exe dosyasının yolunu belirtmeden direkt nasıl çalıştırabiliriz...?
İşine yaramasına sevindim ,selamlar
tamamdır teşekkürler.
Aslında sıkıntılı değil de Mehmet işin içine başka bilgiler giriyor mesela illa yönetici yetkilerinde çalışması gerekir , yoksa hata verir aşağıdakini indir ilgili yere "sordum" isminde bir klasör aç ve dene kopyalayacaktır
Web Link ...
anladım, ben zaten verdiğin örneğe eklemem gereken scripti ekleyip öyle denemeler yaptım ama yine olmadı nedense, vbs ile 2 çevre değişkeni kullanmak biraz sıkıntılı anlaşılan.
Kodu ben mantığını anlatmak için örnek olarak verdim , yani o şekilde zaten çalışmaz , kaldıki Vbs de kopyalama oldukça sorunludur zorda kalmadıkça kullanmam.
olmadı hocam script hata veriyor "satır 1 WshShell gerekli diyor" , bende WshShell ekledim bu sefer başka hatalar veriyor yine olmadı, mesela farzedelim benim %PROGRAMDATA% konumunda Deneme adında bir klasörüm var ben bunu %PROGRAMFILES% konumuna kopyalamak istiyorum, bunun tam scriptini verirseniz daha garanti olur hemde kafam karışmaz.
Aşağıdaki gibi yapabilirsin:
vAPPDATA1 = WshShell.ExpandEnvironmentStrings("%PROGRAMDATA%")
vAPPDATA2 = WshShell.ExpandEnvironmentStrings("%PROGRAMFILES%")
Const OverWriteFiles = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFolder vAPPDATA1 , vAPPDATA2 , OverWriteFiles
selam, internette vbs çevre değişkeni ile ilgili birtek bu konuyu buldum güzel paylaşım teşekkürler, peki aynı scriptte iki çevre değişkeni kullanmak istiyorum o zaman nasıl oluyor, mesela C:\ProgramData (%PROGRAMDATA%) konumundaki bir klasörü C:\Program Files (%PROGRAMFILES%) konumuna kopyalamak istiyorum bu iki çevre değişkenine aynı anda kullanarak, o zaman script nasıl olması lazım ?