Jump to content

Ams'de %username% Gibi Variable Karşılığı


radyofon
 Share

Recommended Posts

İyi Çalışmalar arkadaşlar,

 

AMS' de %username%  %systemdrive%  %systemroot% gibi komutların karşılığı var mı?

 

C:\Kullanıcılar\kullanıcı adı\                altına bir dosya kopyalabilmem için bu variable'lara ihtiyacım var. Çünkü her bilgisayarda kullanıcı adı değişiyor. Bunun AMS' de bir karşılığı var mı? File.Copy komutuyla var olan dosyanın yerine yenisini her bilgisayarda kopyalamam gerekiyor.

Link to comment
Share on other sites

kod editöründeyken CTRL+Space'e basınca açılan listeden hepsini bulabilirsiniz:

 

MQDsYnt.png

 

kullanımı:

klasor = Shell.GetFolder(SHF_MYDOCUMENTS)
Dialog.Message("", klasor)

Edit: help dosyasından Shell.GetFolder'ı aratırsanız orda tam liste varmış yeni farkettim.

Link to comment
Share on other sites

Setup factory için yapılmış bir örnek bulup onu AMS'ye uyarladım:

local adf = Shell.GetFolder(SHF_MYDOCUMENTS)
Dialog.Message("", adf)
local lastSlashPos = String.ReverseFind (adf,"\\"); 
userDir = String.Left (adf, lastSlashPos - 1);
Dialog.Message ("Kullanici Klasörü:", userDir);

Windows 8'de çalışıyor ama Win7 ve XP'de denemek lazım.

Link to comment
Share on other sites

  • Editor

File.Copy("C:\\Users\\"..os.getenv("USERNAME").."\\Documents\\a.bat",_SourceFolder.."\\a.bat");

 

 

bu şekilde belgelerim altındaki a.bat dosyasını exenin yanına kopyalar.

Link to comment
Share on other sites

Sevgili pairs

".java.policy" diye bir dosyayı "c:\Kullanıcılar\kullanıcı adı" içerisine kopyalamam gerekiyor. Yazdığım komut aşağıda ve çalışmıyor. Acaba reyiz'in dediği gibi çalışmıyor mu? Deneme yaptığım sistem 64bit Win7

 

File.Copy("AutoPlay\\Docs\\.java.policy", os.getenv("USERPROFILE"), true, true, true, true);

Edited by radyofon
Link to comment
Share on other sites

Ben bir yerde hata yapıyorum mutlaka.  os.getenv komutundan önce C:\\USER girmek gerekli mi acaba? Öyle de denedim olmadı. Bir de şöyle de düşünmek gerekir. Kullanıcıların sistem dosyalarının bulunduğu kısım C olmayabilir de. Bu durumda ne yapmak gerekir? Acaba eksik plugin mi var?

 

Edit

---------

Arada bir dialog vardı, Orada hata varmış. teşekkürler @pairs, teşekkürler KintaRo

 

Fakat dediğim gibi, kullanıcının bulunduğu directory C değil ise ne yapacağız. Her türlü koşulda çalışması için ana dizin adını almamız gerekmez mi? SessionVar.Get mi kullanmalıyız? Nasıl yapmalıyız?

Edited by radyofon
Link to comment
Share on other sites

  • Editor

radyofon kullanıcı adını istedin sadece o yüzden username dedim .Os.GetEnv() fonksiyonuyla sistemde çalışan tüm fonksiyonlaı kullanabilirsin.

Link to comment
Share on other sites

Ana dizinin değişken olabileceğini yani C:, D:, E:, F:, olabileceğini düşünerek

KintaRo üstadın yapmış olduğu scriptin daha iyi sonuç vereceğini düşündüm ve aşağıdaki gibi bir script yaptım.

 

if System.Is64BitOS() then 
Wow64.DisableFsRedirection();
end
local adf = Shell.GetFolder(SHF_MYDOCUMENTS)
local lastSlashPos = String.ReverseFind (adf,"\\"); 
userDir = String.Left (adf, lastSlashPos - 1);
Dialog.Message ("Kullanici Klasörü:", userDir);
Dialogoldjavapolicy = Dialog.Message("Eski .java.policy dosyasını silme", userDir.."  altındaki '.java.policy' dosyasını\r\n\r\nsilmemi ve yenisini kopyalamamı ister misiniz?", MB_YESNO, MB_ICONINFORMATION);
      if (Dialogoldjavapolicy==IDYES) then
      File.Copy("AutoPlay\\Docs\\.java.policy", userDir, true, true, true, true);
      end
if System.Is64BitOS() then
Wow64.RevertFsRedirection();
end
Link to comment
Share on other sites

Userprofile değişkeni bütün Windows sürümlerinde kullanılabilir. Sizin sisteminizde bir sorun olmalı.

Bu şekilde dener misiniz birde?

File.Copy("AutoPlay\\Docs\\.java.policy", os.getenv("USERPROFILE").."\\.java.policy", true, true, true, true);
Link to comment
Share on other sites

@reyiz

 

sistemimde sorun olduğundan değil. Komutun:

File.Copy("AutoPlay\\Docs\\.java.policy", "C:\\Users\\"..os.getenv("USERNAME").."\\.java.policy", true, true, true, true);

şeklinde olması nedeniyle. Dikkat edersen burada Users dan önce kök dizin olarak C: var. Demek istediğim bunun D: de olabileceği ya da başka bir harf.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...