Statistiques disque(s) dur(s)

Contenu du snippet

Voilà un moment que je n'avais pas posté ici, alors ayant un manque d'imagination sur le coup, je reprends simplement l'idée de ma dernière source avec quelques modifications.

Vous pouvez avoir les statistiques d'un disque dur, ou de l'ensemble des disques détectés sur votre machine. Avec possibilité d'envoyer ces informations sur la fenêtre active de votre mIRC.

Afin de simplifier l'utilisation, ce script détecte dès l'ouverture du dialog les disques branchés.

Source / Exemple :


dialog ddstats {
  title "Statistiques des disques durs"
  size -1 -1 141 184
  option dbu
  tab "Unitaire", 1, 3 1 134 166
  box "Sélection", 3, 6 18 127 37, tab 1
  text "Lettre du volume à scanner.", 6, 37 29 69 8, tab 1
  button "Analyser", 7, 51 40 37 11, tab 1
  box "Statistiques", 8, 6 59 127 104, tab 1
  text "Nom du volume :", 9, 11 69 41 8, tab 1
  text "Type de volume :", 10, 11 80 42 8, tab 1
  text "Espace total :", 11, 11 91 34 8, tab 1
  text "Espace libre :", 12, 11 102 33 8, tab 1
  text "", 13, 53 69 53 8, tab 1
  text "", 14, 54 80 53 8, tab 1
  text "", 15, 46 91 60 8, tab 1
  text "", 16, 45 102 45 8, tab 1
  text "Jauge de l'espace occupé :", 17, 11 114 71 8, tab 1
  text "", 19, 19 125 100 8, tab 1
  button "Envoyer sur la fenêtre active", 18, 32 147 77 12, tab 1
  text "|", 20, 17 125 1 8, tab 1
  text "0 %", 21, 13 133 12 8, tab 1
  text "|", 22, 119 125 1 8, tab 1
  text "100 %", 23, 114 133 17 8, tab 1
  text "", 24, 64 133 18 8, tab 1
  combo 5, 11 29 22 9, tab 1 drop size
  tab "Total", 2
  box "Statistiques globales", 25, 6 37 127 126, tab 2
  text "Nombre de volumes :", 26, 11 47 53 8, tab 2
  text "Lettres des volumes scannés :", 27, 11 58 78 8, tab 2
  text "", 28, 11 69 117 8, tab 2
  text "Espace total :", 29, 11 80 35 8, tab 2
  text "", 30, 47 80 52 8, tab 2
  text "Espace libre :", 31, 11 91 34 8, tab 2
  text "Espace occupé :", 32, 11 102 41 8, tab 2
  text "", 33, 46 91 48 8, tab 2
  text "", 34, 65 47 20 8, tab 2
  text "", 35, 53 102 48 8, tab 2
  text "Jauge de l'espace occupé :", 36, 11 116 67 8, tab 2
  text "|", 37, 17 126 1 8, tab 2
  text "", 38, 19 126 100 8, tab 2
  text "|", 39, 119 126 1 8, tab 2
  text "0 %", 40, 14 134 12 8, tab 2
  text "100 %", 41, 112 134 18 8, tab 2
  text "", 42, 62 134 20 8, tab 2
  button "Envoyer sur la fenêtre active", 43, 32 147 77 12, tab 2
  button "Lancer une analyse complète", 44, 35 21 75 12, tab 2
  button "Fermer", 4, 53 170 37 12, default ok
}
on *:dialog:ddstats:*:*: {
  if ($devent == init) {
    did -b $dname 18,43
    var %i 1
    set %dnb 0
    while (%i < 26) {
      var %chr $chr($calc(97+%i))
      if (($disk(%chr).size != 0) && ($disk(%chr).size)) { 
        var %dd $upper(%chr) $+ :
        set %dlist $addtok(%dlist,%dd,32)
        inc %dnb 
        didtok $dname 5 32 %dd
      }
      inc %i
    }
  }
  elseif ($devent == sclick) {
    if ($did == 7) {
      if (!$did(5).seltext) { did -b $dname 18 | did -r $dname 13,14,15,16,19,24 | halt }
      set %per.cent $int($calc(100 - $calc(100 * $calc($disk($did(5).seltext).free / 1073741824) / $calc($disk($did(5).seltext).size / 1073741824))))
      did -e $dname 18
      did -a $dname 13 $iif($disk($did(5).seltext).label == $null,Unnamed,$disk($did(5).seltext).label)
      did -a $dname 14 $iif($disk($did(5).seltext).type == fixed,Interne,Externe)
      did -a $dname 15 $round($calc($disk($did(5).seltext).size / 1073741824),2) Go
      did -a $dname 16 $round($calc($disk($did(5).seltext).free / 1073741824),2) Go
      did -a $dname 19 $str(|,$calc(%per.cent / 2))
      did -a $dname 24 %per.cent % 
    }
    elseif ($did == 18) {
      msg $active 1· Statistiques pour le volume $did(5).seltext
      msg $active 1· Nom du volume : $did(13)
      msg $active 1· Type de volume : $did(14)
      msg $active 1· Espace total : $did(15)
      msg $active 1· Espace libre : $did(16)
      var %i 0, %max = $int($calc(%per.cent / 5))
      while (%i < 20) {
        if (%i < %max) {
          var %jauge %jauge 4|
        }
        else {
          var %jauge %jauge 3|
        }
        inc %i
      }
      msg $active 1· Jauge de l'espace occupé : %jauge 1 $did(24)
    }
    elseif ($did == 44) {
      var %j 0
      while (%j < $numtok(%dlist,32)) {
        inc %j
        var %size $calc($round($calc($disk($gettok(%dlist,%j,32)).size / 1073741824),2) + %size)
        var %free.size $calc($round($calc($disk($gettok(%dlist,%j,32)).free / 1073741824),2) + %free.size)
      }
      set %gper.cent $int($calc(100 - $calc(100 * %free.size / %size)))
      did -e $dname 43
      did -a $dname 34 %dnb
      did -a $dname 28 %dlist
      did -a $dname 30 %size Go
      did -a $dname 33 %free.size Go
      did -a $dname 35 $calc(%size - %free.size) Go
      did -a $dname 38 $str(|, $int($calc(%gper.cent / 2)))
      did -a $dname 42 %gper.cent %
    }
    elseif ($did == 43) {
      msg $active 1· Statistiques pour l'ensemble des volumes
      msg $active 1· Nombre de volumes analysés : $did(34)
      msg $active 1· Noms des volumes détectés : $did(28)
      msg $active 1· Espace total : $did(30)
      msg $active 1· Espace libre : $did(33)
      msg $active 1· Espace occupé : $did(35)
      var %i 0, %max = $int($calc(%gper.cent / 5))
      while (%i < 20) {
        if (%i < %max) {
          var %jauge %jauge 4|
        }
        else {
          var %jauge %jauge 3|
        }
        inc %i
      }
      msg $active 1· Jauge de l'espace occupé : %jauge 1 %gper.cent %
    }
  }
  elseif ($devent == close) { unset %per.cent | unset %gper.cent | unset %dnb | unset %dlist }
}
alias ddstats dialog $iif($dialog(ddstats),-v,-m ddstats) ddstats 
menu channel {
  Stats:/ddstats
}

Conclusion :


Histoire d'éviter un freeze de quelques secondes au moment du scan des disques, le lecteur A: n'est tout simplement pas vérifié (Cette lettre étant, la plupart du temps, allouée au lecteur de disquette).

Me semble avoir tout dit, messieurs dames, à vos commentaires !

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.