chat eczaonline.com

Ders: Dosya ve Klasör Tanımları

L4roXyL

Profesyonel
Katılım
16 Eki 2011
Mesajlar
124
Beğeniler
1
#1
Ders: Dosya ve klasör tanımları
Tarih: 04 Ekim Perşembe 2007
Yazan: L4roXyL - (Hasan AYDENİZ)

-

Evet arkadaşlar bu dersimizde, mIRC Scripting'da işimize oldukça fazla yarıyan dosya ve klasör identifier'larının ne işe yaradıklarını anlatacağız.
Dersimizi dikkatli okuyan bir arkadaşımız, ders sonunda hiçbirşey bilmese bile mantığı kavramış olucak.
Neyse başlıyalım.

Identifier'lar;

Kod:
$abook(nick,N) - Prop: nick, info, email, website, picture, noteN
$alias(N/filename)
$crc(text|&binvar|filename,[N])
$disk(path|N) - Prop: type, free, label, size, unc, path
$exists(file/dir)
$file(filename) - Prop: size, ctime, mtime, atime, shortfn, longfn, attr
$filtered
$finddir(dir,wildcard,N,depth,@window | command) - Prop: shortfn
$findfile(dir,wildcard,N,depth,@window | command) - Prop: shortfn
$getdir
$ini(file,topic/N,item/N)
$isdir(dirname)
$isfile(filename)
$lines(filename)
$logdir
$longfn(filename)
$mididir
$mircdir
$mircexe
$mircini
$mklogfn(filename)
$msfile(dir,title,oktext)
$nofile(filename)
$nopath(filename)
$read(filename, [ntswrp], [matchtext], [N])
$readn
$readini(filename, [np], section, item)
$sdir(dir,title)
$sfile(dir,title,oktext)
$shortfn(filename)
mIRC.help dosyasında, oldukça basit bir şekilde üzerinden geçilen bu identifier'ların hepsini tek-tek ve oldukça basit bir şekilde açıklıyacağım.

1: $abook(nick,N) - Prop: nick, info, email, website, picture, noteN
Bu identifier'ın ilk önce kullanımı açıklıyacağım;
/help Address book yazdığınızda;
Abook hakkında bir takım bilgiler görüceksiniz.
Abook komutları.
/abook : Adres defteri'ni açıcaktır.
/abook -w IF : Adres defterinde kayıtlı olan IF nick'inin whois bilgilerini tablo içerisinde gösterecktir. Eğer nick girilmezse boş tablo açılacaktır.
/abook -n : Notify listesini tablo içerisinde açıcaktır.
/abook -c : Kontrol menüsünü açıcaktır. Bu menüde ignore listesinde ekli olan kişiler gözükür.
/abook -l : Renkler tablosunu açıcaktır. Bu menüde renklendirilmiş, veriler ve/ya nickler gözükecektir.
İdentifier açıklaması.
Örneğin IF nick'ini ele alalım.
/abook yazarak tabloyu açtık;
Nick: IF yaptık.
İsim: IRCforumlari yaptık.
Email: IF@ders.com yaptık.
Web site: http://www.IRCForumlari.net yaptık.
Adresi: IF.IF.net yaptık.
Not: IF IRC paylaşım plartformu. Yaptık.
Resim olarak'da IF.jpeg olarak bir resim atadık.
Şimdi $abook identifier'ını nerelerde kullanırız?
//echo -a $abook(0) Adres defterinde kaç kişi olduğunu gösterir.
//echo -a $abook(1) Adres defterindeki 1. kişinin nick'ini verir.
//echo -a $abook(1).nick Adres defterindeki 1. kişinin nick'ini verir.
//echo -a $abook(1).info Adres defterindeki 1. kişinin ismini verir.
//echo -a $abook(1).email Adres defterindeki 1. kişinin e-mail adresini verir.
//echo -a $abook(1).website Adres defterindeki 1. kişinin web site adresini verir.
//echo -a $abook(1).picture Adres defterindeki 1. kişi'ye eklenen resim'in bulunduğu klasör'ün ismini verir.
//echo -a $abook(1).note Adres defterindeki 1. kişiye eklenen not bilgisini verir.
Bu bilgilerden yola çıkarak basit bir kod yazalım.
Mesela; Adres defterinde kayıtlı olan nick'lerin bilgilerini sıralıyalım.

Kod:
alias adbk { 
  var %- = 1,%& = $abook(0)
  while %- <= %& {
    echo -a -------- $abook(%-) -------------
    echo -a Nick: $abook(%-).nick
    echo -a Isim: $abook(%-).info
    echo -a E-mail: $abook(%-).email
    echo -a Sitesi: $abook(%-).website
    echo -a Resim: $abook(%-).picture
    echo -a NOT: $abook(%-).note
    inc %-
  }
}
Gibi.


2: $alias(N/filename)
mIRC'deki alias'ların yüklendiği klasörün ismini/sayısını verir.
//echo -a $alias(0) mIRC'de alias'ların yüklendiği dosya sayısını verir.
//echo -a $alias(1) 1. dosya'nın yolunu verir.


3: $crc(text|&binvar|filename,[N])
Bu identifier herhangi bir dosyayı korumaya almak veya daha farklı işlemler yapmak için kullanılır.
//echo -a $crc(varolan-dosya.unzatısı) yaptığınızda, bu dosya için 8 karakterlik bir veri alıcaksınız.
Şimdi diyeceksinizki bu bizim ne işimize yarar?
Örneğin IF.txt diye bir dosya oluşturdunuz ve bu dosyada en ufak bir değişilkik yapılması halinde bir takım olayların olmasını istiyorsunuz?
//echo -a $crc(IF.txt) yaparsınız;
Örneğin; 1DE1AB0A 8 karakterden oluşan bir veri alırsınız.
/set %ok 1DE1AB0A şeklinde bilgiyi bir veriable'ye atasınız,
Ve script açıldığında IF.txt dosyasında bir değişiklik var ise mIRC kapansın diyorsanız;
on *:start: { if $crc(IF.txt) != %ok { exit } }
Şeklinde bir kod yazarsınız.


4: $disk(path|N) - Prop: type, free, label, size, unc, path
Bu identifier bilgisayarınızda bulunan sürücü'ler, disk'ler ve çıkarılabilir aygıtlar hakkında bir takım bilgiler almanızı sağlar.
//echo -a $disk(0) Bilgisayarda bulunan disk'lerin sayısını verir.
//echo -a $disk(1) 1 olarak numaralandırılmış disk'in aktif olup olmadığını öğrenirsiniz.
$true aktif demektir.
$false deaktif demektir.
//echo -a $disk(1).type 1 olarak numaralandırılmış disk'in durumunu verir.
Fixed: Çıkarılamaz biçimlendirilmiş alan.
Removable: Çıkarılamaz biçimlendirilmemiş alan.
Cdrom: Çıkarılabilir gelişmiş okuyucu/yazıcı. (Cdrom/Dvdrom/Writer/Disk) gibi.
//echo -a $disk(1).free 1 olarak numaralandırılmış disk'in dolu olduğu alanı byte olarak verir.
//echo -a $disk(1).path 1 olarak numaralandırılmış disk ismini verir.
Bu bilgilerden yola çıkarak basit bir kod yazalım.
Örneğin; Bilgisayardaki bütün disklerin isimlerini, dolu alanlarını, toplam alanlarını ve türünü gösteren bir kod.

Kod:
alias disk {
  var %/ = 1,%\ = $disk(0)
  while %/ <= %\ {
    echo -a ------- $disk(%/).path -------
    echo -a Disk adı: $disk(%/).path
    echo -a Toplam alan: $+($bytes($disk(%/).size,g),$chr(32),GB)
    echo -a Boş alan: $+($bytes($disk(%/).free,g),$chr(32),GB)
    echo -a Kullanılan alan: $+($calc($bytes($disk(%/).size,g)-$bytes($disk(%/).free,g)),$chr(32),GB)
    echo -a Türü: $replace($disk(%/).type,fixed,Çıkarılamaz   biçimlendirilmiş alan.,removable,Çıkarılamaz biçimlendirilmemiş   alan.,cdrom,Çıkarılabilir $+(CD,$chr(44),$chr(32),DVD) veya disk   okuyucu/yazıcı.)
    inc %/
  }
}
Bu arada güzel kod oldu :)


5: $exists(file/dir)
Bilgisayaranızdaki herhangi bir klasör'ü veya dosyayı kontrol etmek için kullanılan identifier'dır.
Örneğin; //echo -a $exists(C:\) yaparsanız $true olarak dönecektir.
Örneğin; //echo -a $exists(C:\Program Files) yaparsanız $true olarak dönecektir.
Örneğin; //echo -a $exists($mircdirIF.txt) Eğer mIRC ana klasöründe, IF.txt isimli bir dosya yok ise $false olarak dönecektir.


6: $file(filename) - Prop: size, ctime, mtime, atime, shortfn, longfn, attr
Herhangi bir dosya hakkında detaylı bilgiler veren bir identifier'dır.
Örneklerle açıklıyalım;
//echo -a $file(aliases.ini) Aliases.ini dosyasının kaç byte olduğunu verir.
//echo -a $file(aliases.ini).size Aliases.ini dosyasının kaç byte olduğunu verir.
//echo -a $file(aliases.ini).ctime Aliases.ini dosyasının oluşturulma tarihini verir.
//echo -a $file(aliases.ini).mtime Aliases.ini dosyasının en son düzenlenme tarihini verir.
//echo -a $file(aliases.ini).atime Aliases.ini dosyasının en son erişim tarihini verir.
//echo -a $file(aliases.ini).shortfn Aliases.ini dosyasının hangi klasörde bulunduğunu kısa olarak gösterir.
//echo -a $file(aliases.ini).longfn Aliases.ini dosyasının hangi klasörde bulunduğunu uzun olarak gösterir.
Bu bilgilerden yola çıkarak basit bir kod yazalım.
Örneğin mIRC.exe dosyası hakkında bazı bilgiler edinelim.

Kod:
alias mircx {
  echo -a ----------- $mircexe ------------
  echo -a Alan: $+($bytes($file($mircexe).size,m),$chr(32),MB)
  echo -a Oluşturulma: $asctime($file($mircexe).ctime)
  echo -a Son düzenlenme: $asctime($file($mircexe).mtime)
  echo -a Son erişim: $asctime($file($mircexe).atime)
  echo -a Bulunduğu klasör: $file($mircexe).longfn 
}
Gibi.


7: $filtered
/filter komutu hakkında bir identifier.
Başlı başına bir konu olduğu için(/filter) ileriki zamanlarda anlatıcağım.


8: $finddir(dir,wildcard,N,depth,@window | command) - Prop: shortfn
Kullanım alanı oldukça geniş bir identifier'dır.
Herhangi bir klasördeki veya sabit sürücüdeki klasör sayısını, klasör ismini, klasör'ün bulunduğu yeri gibi bilgileri öğrenebileceğiniz bir identifier'dır.
Örneğin; //echo -a $finddir($mircdir,*,0) mIRC klasöründeki, toplam klasör sayısını verir.
Örneğin; //echo -a $finddir(C:\Program Files,mIRC*,0) Program Files klasöründeki, mIRC kelimesi ile başlıyan klasör sayısının toplamını verir.
Örneğin; //echo -a $finddir(C:\Program Files,*mIRC*,*,echo -a $1-) Program Files klasöründe, içinde mIRC kelimesi geçen tüm klasör'lerin bulunduğu yerin ismini ve son olarak sayısını verir.
Yani son örnek'ten anlıyacağınız gibi command bölümünde komut uygulatabiliyoruz.
Prop örneği; shortfn
//echo -a $finddir(C:\Windows,*Windows*,1).shortfn C sürücüsünde windows klasöründeki, içinde windows kelimesi geçen 1. klasör'ün kısa yol olarak gösterimi ile bulunduğunu yeri gösterir.

9: $findfile(dir,wildcard,N,depth,@window | command) - Prop: shortfn
Bu identifier kullanım alanı $finddir identifier'ından oldukça daha fazla geniş olan bir identifier'dır.
Bu identifier'da $finddir kullanımında olduğu gibi klasör ismi/sayısı değil, dosya ismi/sayısı hakkında bilgiler alırız.
Örneğin; //echo -a $findfile($mircdir,*,0) mIRC ana klasöründe bulunan toplam dosya sayısını verir.
Örneğin; //echo -a $findfile($mircdir,*.txt,0) mIRC ana klasöründe bulunan ve uzantısı txt olan tüm dosya'ların sayısını verir.
Örneğin; //echo -a $findfile($mircdir,*.exe,0,echo -a $1-) mIRC ana klasöründe bulunan ve uzantısı exe olan tüm dosyaları listeler ve son olarak sayısını verir.
Yani yukarıdaki son örnek command kısmına bir açıklama getirmiştir.
Bir örnek daha vereyim command kısmı için;
Örneğin; //echo -a $findfile($mircdir,*.exe,1,run $1-) mIRC ana klasöründe bulunan ve uzantısı exe olan 1. sıradaki dosyayı açıcaktır.
Prop örneği: shortfn
//echo -a $findfile($mircdir,*.ico,1).shortfn mIRC ana klasöründe bulunan, uzantısı ico olan ve sıra olarak 1 numarayı alan dosyanın kısayol formatını verir.

10: $getdir
Dışarıdan gelen dosyaların(DCC) bulunduğu ve bulunacağı klasörün ismini verir.
Normalde bu klasörün adı, "download" olur.


11: $ini(file,topic/N,item/N)
Bu identifier'da oldukça kullanışlıdır.
Bunun mantığını size farklı anlatmak istiyorum.
Hemen hemen hepimiz mirc.ini dosyasını açmışızdır.
Dosyanın içerisinde;
[mIRC]
[Socks]
[about]
Gibi terim başlıkları görmüşüzdür.
İşte $ini identifier'ının kullanımında belirtilen; topic kısmı bu başlıklar oluyor.
Bu başlıkların altında bazı bilgiler vardır;
Örneğin, [mIRC] başlığını ele alalım.
Bu başlıktaki bilgiler'den örnek olarak;
user=Gerçek isim.
email=E-mail adresi.
nick=Nick
anick=Ana nick.
host=irc.server.netSERVER:irc.server.net:port
Gibi bilgiler yer alıyor.
İşte bu bilgilerin örneğin; host, nick, anick gibi kısımları;
$ini identifier'ında belirtilen item oluyor.
Son olarak $ini identifier'ında belirtilen N ise, numara oluyor.
Şimdi bir kaç örnek verelim.
//echo -a $ini(mirc.ini,rfiles,0) mIRC.ini dosyasında, rfiles(remote'den yüklenilen dosyalar) listesinde kaç adet veri bulunduğunu gösterir.
//echo -a $ini(mirc.ini,cnicks,0) mIRC.ini dosyasında, cnicks(nick renkleri) başlığında kaç adet verinin bulunduğunu gösterecektir.
//echo -a $ini(mirc.ini,fonts,1) mIRC.ini dosyasında, fonts(yazılar) başlığında, ilk sıradaki verinin ismini vericektir.
Dediğim gibi gayet kullanışlı bir identifier'dır.


12: $isdir(dirname)
Buradaki dirname, directory name yani klasör ismi oluyor.
Bu identifier'da mIRC klasöründe bulunan, klasör ismi kontrol etmek için kullanılan bir identifier'dır.
Örneğin; //echo -a $isdir(Ok) Eğer mIRC klasöründe, ok isminde bir klasör bulunmuyorsa; $false olarak dönecektir.
Örneğin; //echo -a $isdir(sounds) Eğer mIRC klasöründe, sounds isminde bir klasör bulunuyorsa; $true olarak dönecektir.


13: $isfile(filename)
Bu identifier'da $isdir gibi mIRC klasöründe bulunan klasör ismini kontrol etmek için değil, dosya ismini kontrol etmek için kullanılır.
Örneğin; //echo -a $isfile(download/IF.txt) Eğer mIRC klasöründe bulunan, download klasöründe, IF.txt isimli bir dosya varsa $true olarak dönecektir.
Eğer IF.txt yok ise $false olarak dönecektir.


14: $lines(filename)
Bu identifier bir dosya içindeki satır sayısını verir.
Örneğin; //echo -a $lines(IF.txt) IF.txt dosyasının satır sayısı gösterilecektir.


15: $logdir
Bu identifier /log on komutu ile tutulan kayıtların, bulunduğu/saklandığı/tutulduğu klasör ismini göstericektir.
//echo -a $logdir


16: $longfn(filename)
Bu identifier kısa olarak gösterilen bir dosyanın, bulunduğu yeri uzun şekilde döndürür.
Örneğin; C:\DOCUME~1\IF\LOCALS~1\Temp klasörünü;
//echo -a $longfn(C:\DOCUME~1\IF\LOCALS~1\Temp) yaptığımızda;
C:\Documents and Settings\IF\Local Settings\Temp
Olarak dönecektir.


17: $mididir
Bu identifier mIRC klasöründe ses dosyalarının bulunduğu klasör olarak tanıtılan klasör ismini vericektir.
//echo -a $mididir


18: $mircdir
Bu identifier mIRC ana klasörünün bulunduğu yeri göstericektir.
//echo -a $mircdir


19: $mircexe
Bu identifier mIRC.exe setup'ının bulunduğu klasör ismini vericektir.
//echo -a $mircexe


20: $mircini
Bu identifier mIRC ayarlarının/işlevlerinin kaydedildiği ini dosyasının bulunduğu klasörün ismini vericektir.
//echo -a $mircini


21: $mklogfn(filename)
Bu identifier içerisine yazılan dosya isminin sonuna, .log uzantısını getirecektir.
//echo -a $mklogfn(IF) IF.log olarak dönecektir.


22: $msfile(dir,title,oktext)
Bu identifier kullanım alanı geniş olan bir identifier'dır.
$msfile identifier'ının içindeki;
1: dir(directory-klasör)
2: title(Açılıcak olan tablodaki başlık ismi)
3: oktext(Açılacak olan tablodaki onaylama butonunun ismi)
Örneğin; //echo -a $msfile(C:\,MP3 Seçiniz,MP3 seç) yaptığımızda, Başlığı, MP3 Seçiniz ve onaylama butonu, MP3 seç isminde bir tanlo açılacaktır.
Ek identifier; $msfile
//echo -a $msfile(0) yaptığınızda, seçilen son dosya sayısını gösterir.
//echo -a $msfile(1) yaptığınızda, seçilen son dosyanın bulunduğu klasör'ü gösterir.


23: $nofile(filename)
Bu identifier, filename kısmına yazılan klasör'ün yolunu gösterir.
//echo -a $nofile($mircdir)


24: $nopath(filename)
Bu identifier, filename kısmına yazılan dosya yolunun son kısmını vericektir.
Örneğin; //echo -a $nopath($mircexe)


25: $read(filename, [ntswrp], [matchtext], [N])
Evet arkadaşlar sırada mIRC scripting'da en çok kullanılan identifier; $read
Parametre bilgileri;
s: Matchtext kısmına yazılan kelime ile başlıyan satırları okutacaktır.
w: Bu parametre en çok kullanılan parametredir.
Matchtext kısmına yazılan kelimeyi wildcards kullanarak ararsınız.
Örneğin; IF* : IF kelimesi ile başlıyan satırları okutur.
Örneğin; *IF : IF kelimesi ile biten satırları okutur.
Örneğin: *IF* : İçinde IF kelimesi geçen satırları okutur.
r: Matchtext kısmına yazılan kelimeyi, regex kullanarak okutmanızı sağlar.
p: Bu parametre ile okutulan satır'da "|" karakteri varolup arkasında ve önünde boşluk var ise; Yani "|" karakteri serbest ise, "|" karakterinden sonra gelen kelimeyi komut olarak uygulatır.
Örneğin; IF.txt isimli dosyanın 8. satırında, "IF | IRCForumlari" diye bir satır mevcut;
//echo -a $read(IF.txt,p,8) yaptığımız zaman; IF kelimesini okutacak, IRCforumlari kelimesini komut girdisi olarak döndürecektir.
n: Bu parametre dosya içinde okutulacak olan satırın/verinin değerlerini veya eklenilen identifier'larını olduğu gibi okutmak için kullanılır.
Örneğin; IF.txt dosyasının 3. satırında "IRCForumlari %:" diye bir veri var. Diyelimki %: veriables değer olarak $me identifier'ına atanmış.
//echo -a $reda(IF.txt,3) Yaptığımızda; IRCforumlari nickim şeklinde cevap alırız.
Ama "n" parametresini kullanırsak;
//echo -a $read(IF.txt,n,3) yaptığımızda; "IRCforumlari %:" olarak dönecektir. Yani anlıyacağınız değerler veya biçilen identifier'lar olduğu gibi çıkacaktır.
t: Bu parametre belirtilen satır boş ise bir alt satırı okutacaktır.
Zaten $read bilinen bir identifier olduğu için bu kadar bilgi yeterli olucaktır.
Şimdi bu bilgilerden yola çıkara basit bir kod yazalım.
Örneğin, bir dosya içinde tüm satırları okutmak.

Kod:
alias oku {
  var %// = 1,%/ = $lines(dosya.txt)
  while %// <= %/ {
    echo -a $read(dosya.txt,%//)
    inc %//
  }
}
Gibi.


26: $readn
Bu identifier en son okutulan dosyanın, kaçıncı satırını okuttuğunuzu gösterir.
//echo -a $readn


27: $readini(filename, [np], section, item)
Bu identifier ini dosyalarını okumak için $read kadar önemli bir identifier'dır.
Yalnız $read ile aralarında oldukça fark vardır.
Buradaki filename(ini dosyası), [np-parametreler], section(kısım), item(veri)
Yani şu şekilde bir tablo çizelim;
mIRC.ini dosyasında;
[fonts]
fstatus=Arial,712,162
Bu şekilde veriler var.
Bunları $readini kısmının içindeki verilerle göstereyim.
[fonts] : section(kısım)
fstatus(item/veri)=Arial,712,162
[n,p] parametreleri $read identifier'ındaki gibidir. Yani aynı görevi görecektir.
Örneğin; //echo -a $readini(mIRC.ini,mIRC,anick) mIRC.ini dosyasında kayıtlı olan, mIRC kısmındaki(section) ana-nick'i vericektir.


28: $sdir(dir,title)
Bu identifier klasör seçmek/açmak için kullanılır.
$sdir(dir,title) : dir(directory-klasör) title(başlık yazısı)
Örneğin; //echo -a $sdir(C:\,Lütfen MP3'lerin bulunduğu bir klasör seçiniz.)
Burada C:\ klasör'ü açılır ve üst tarafta "Lütfen MP3'lerin bulunduğu bir klasör seçiniz." metni yazar.
Eğer herhangi bir klasör seçilir, onay tuşuna basılırsa; seçilen dosyanın bulunduğu alan gösterilir.
Örneğin; C:\WINDOWS\ gibi.


29: $sfile(dir,title,oktext)
Bu identifier ise, belirtilen klasör'ün içindeki herhangi bir dosyayı açmak/göstermek için kullanılır.
$sfile(dir,title,oktext) : dir(directory-klasör) title(başlık yazısı) oktext(onaylama-yazısı)
Örneğin; //echo -a $sfile($mircdir,Lütfen bir dosya seçiniz.,TAMAM)
Burada ise; mIRC'in bulunduğu ana klasör açılır. Eğer herhangi bir dosya seçilirse, dosyanın yolu gösterilir. Seçilmezse herhangi bir işlev yapılmaz.


30: $shortfn(filename)
Bu identifier uzun olarak okunan dosya yolunu, kısa dosya yoluna çevirir.
Örneğin; $shortfn(C:\windows\pchealth\helpctr\Config\CheckPoint)
//echo -a $shortfn(C:\windows\pchealth\helpctr\Config\CheckPoint)
Yazdığımız zaman; C:\windows\pchealth\helpctr\Config\CHECKP~1 olarak dönecektir.

-

Umarım işinize yarıyacak bilgiler vermişimdir.
Kolay gelsin.
 

Bu konuyu okuyanlar (Üyeler: 1, Misafirler: 0)

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur. iyinet.com sayfalarında yer alan yazı, görsel ve linklerle ilgili hukuki şikayetleriniz için Buradan iletişime geçmeniz durumunda, ilgili kanunlar ve yönetmelikler çerçevesinde en geç 7 gün içerisinde iyinet yönetimince tarafınıza dönüş sağlanacaktır.
Üst