mIRC’de bir çok identifier ile bir dosyanın boyutunu her cinsten alabiliriz. Ama bir klasörün (dizinin) boyutunu alabilirmiyiz?
mIRC’in tanımlı identifierleri ile malesef alamayız, fakat bunun için bir kod geliştirilmiş. Bu kod sayesinde bir dizinin içindeki bütün dosyalarının toplam boyutunu alabilirsiniz. Kodun güzel özelliği ise bir dizinin içerisindeki farklı alt dizinlerin içerilerindeki dosyaları bile okuyabilmesidir.
Kullanım;
$dirsize([dizin]).prop
; [dizin] – dizinin uzantısı eğer çok uzun bir uzantı ise “” kullanmayın, script kendisi verecektir.
; [prop] – bilgileri destekler.
; .b – byte cinsinden sonucu verir, her bin sayıda ayıraç kullanır.
; .bytes – byte cinsinden sonucu verir.
; .ib|ibytes – dizin_isimi ve dizin_boyutu olarak sonuç verir
CODE:
-
alias ndirsize {
-
var %err echo $color(info2) -s *
-
if ($version <6.0) {
-
%err Error: need version 6.0 or higher
-
return
-
}
-
var %a $+(ds,$ticks), %b $prop, %bytes, %dir $iif($numtok($1-,32)> 1,$+(“,$remove($1-,”),”),$1-), %file $mircdirdsizetmp.txt, %tmp
-
if (!$isdir(%dir)) {
-
%err $!ndirsize(): insufficient parameters
-
return
-
}
-
write -c %file
-
.comopen %a WScript.Shell
-
if ($comerr) { return }
-
if ($com(%a,Run,3,bstr,cmd.exe /c DIR /S /A DHSRA- %dir> ” $+ %file $+ “,uint,0,bool,true)) { .comclose %a }
-
%tmp = $read(%file,w,*Total Files Listed*)
-
%tmp = $readn
-
%tmp = %tmp + 1
-
%tmp = $read(%file,l,%tmp)
-
if (File(s) !isin %tmp) {
-
%err $!ndirsize(): an error occured
-
return
-
}
-
.remove %file
-
%bytes = $gettok($gettok(%tmp,2,41),1,32)
-
if (!%b) { goto none }
-
goto %b
-
:b | return %bytes
-
:ib | return %dir %bytes
-
:bytes | return $remove(%bytes,$chr(44))
-
:ibytes | return %dir $remove(%bytes,$chr(44))
-
:none | return $bytes($remove(%bytes,$chr(44))).suf
-
}


Kategori:
Etiket: