Ç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ı
ve kullanıcı profili ayarlarını nerede bulacağını bilmelerine yardımcı olurlar , dinamiktirler çünkü değişebilirler. Mesela %appdata% Microsoft Windows tarafından kullanılan ortam değişkenlerinden biridir.Birçok programın kullanıcınıza özel verileri depoladığı uygulama veri klasörüne işaret eder , ismi Mert olan kullanıcıda bu ismi işaret ederken Ayşe de komut uygulandığında Ayşe kelimesini içerecektir. Çevre değişkenleri toplu listesi Burada
%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
Teşekkürler.
elinize sağlık müthiş bilgiler
Başlık 2014 yılına ait ozaman Google çevre değişkeni diye tercüme ediyordu artık ortam diyor 😀
"Environment" için ortam daha uygun bir çeviri bence 🙂
Bilgi ve öneri için teşekkürler
Faydalı olmasını dilerim.
Çok kullanışlı. Çok teşekkürler.
Tebrik ederim , hem böylece Yönetici olarak çalıştır kısmı 3-4 satırdan oluşmuyor.
Üstat en sonunda buldum 🙂
Hem geçerli dizinde hem de yönetici olarak çalıştıran vb script kodu:
sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
Set UAC = CreateObject("Shell.Application")
UAC.ShellExecute sCurPath & "\Autoruns64.exe", "", "", "runas", 1
Yardımlarınız için tekrardan teşekkürler...
Çünkü "C:\Windows\System32" içerisine bakıyor. Vbs de Herzaman admin yetkisi kullanmak pek pratik olmuyor , benim verdiğim kod en yalın hali ile exe çalıştırmak içindi, Admin kodları işin içine girince kodu da değiştirmek gerekiyor,
Üstadım müsadenle bu konuda son bir sorum daha var...
VB scripte admin yetkisini kod yoluyla eklediğim zaman neden "Sistem belirtilen dosyayı bulamıyor" hatası veriyor?
Web Link ...
Ben kodları kontrol edeceğini zannetmiştim , nihayetinde çözülmesine sevindim, Selamlar