Ç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
Hallolmasına memnun oldum , Selamlar.
Teşekkür ederim Üstat, çalışıyor.
Ellerinize sağlık. Selam ve dua ile.
Az önce denedim sadece aşağıdaki satırı değiştirerek sorunsuz kopyalam ayaptı :
strPROGRAMFILES=objShell.ExpandEnvironmentStrings("%PROGRAMFILES(x86)%\") & "\"
Üstat, sizin verdiğiniz bilgilerle dosya kopyalama yapmaya çalışıyorum.
Program Files klasörüne dosya kopyalamak için aşağıdaki kodlar çalışıyor fakat;
' Yönetici yetkisiyle çalışır-----------------------------
If WScript.Arguments.Named.Exists("elevated") = False Then
CreateObject("Shell.Application").ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ /elevated", "", "runas", 1
WScript.Quit
Else
Set oShell = CreateObject("WScript.Shell")
oShell.CurrentDirectory = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)
End If
' ---------------------------------------------------------
' 123.txt dosyasını, Program Files içine kopyalar
Const OverwriteExisting = TRUE
Dim oFSO, strPROGRAMFILES, objShell
Set objShell = CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim strScriptPath : strScriptPath = Replace(WScript.ScriptFullName, "\" & WScript.ScriptName, "")
objShell.CurrentDirectory = oFSO.GetParentFolderName(WScript.ScriptFullName)
strPROGRAMFILES=objShell.ExpandEnvironmentStrings("%PROGRAMFILES%\") & "\"
oFSO.CopyFile strScriptPath& "\123.txt", strPROGRAMFILES, OverwriteExisting
%PROGRAMFILES(x86)% değişikliği yaparak, PROGRAMFILES(x86) klasörüne dosya kopyalama yapmıyor.
Nerede hata yapıyorum?
Teşekkürler Zeki.
Bütün makaleleri okuyorum.Sıkı bir takipçinizim bu bilgiler müthiş teşekkürler.