nilopa
unread,Sep 5, 2016, 5:41:24 PM9/5/16You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
~jose~ escribió el 11/12/2006 22:17 :
> Hola, que tal?
> Estoy interesado en poner en mi web un código que me cuente todos los
> archivos que tengo alojados en la web y también quisiera saber la suma
> del tamaño de todos.
> No quiero que me cree un listado con todos los archivos y sus tamaños,
> quisiera solo que me cuente el numero de archivos y el total de megas.
>
> Gracias, un saludo,
> jose
>
Si el hosting tiene PHP, este script te muestra una lista de cada directorio
hasta el nivel de detalle que le digas (formulario), contando archivos y
tamaño acumulado de forma recursiva.
Copia el código que sigue en un archivo directorios_hosting.php (u otro
nombre que quieras), súbelo al servidor y ejecútalo desde un
navegador:
=======================
<?php
if (isset($_POST["nivel"])) {
$mostrar_hasta_nivel = $_POST["nivel"];
$comenzar_nivel_inferior = $_POST["comenzar_nivel_inferior"];
// $mostrar_hasta_nivel = 3;
global $nivel_directorio_raiz;
global $nivel_directorio;
$path = dirname(__FILE__);
if ($comenzar_nivel_inferior == "si") {
$path = substr($path, 0, strrpos($path, "/"));
}
$nivel_directorio_raiz = count(explode("/", $path)) - 1;
$numero_fila = 1;
// Comienzo de Tabla
echo "<table border='1' cellpadding='3' cellspacing='0'>";
// Fila encabezado
echo "<tr style='font-size: 100%; font-weight: bold;'
bgcolor='#e2e2e2'><td></td><td>Ruta</td><td
align='center'>Nivel</td><td align='right'
style='color:#0000ff;'>Ficheros</td><td align='right'>Acumulado
fich.</td><td align='right'>Directorio</td><td
align='right' style='color:#0000ff;'>Tamaño</td><td
align='right'>Acumulado tamaño</td></tr>";
// Inicio Filas de datos
echo "<tr>";
//Función que se invoca a si misma de forma recursiva según
recorre el directorio raiz ($path)
FileCount($path, $mostrar_hasta_nivel, $nivel_directorio_raiz);
// Din Filas de datos
echo "</tr>";
// Fin de tabla
echo "</table>";
echo "<div style='font-size: 120%;'>";
echo "<br>Total ficheros en la ruta <b><em>" . $path
. ":</em> " .
number_format($count,0,",",".") .
"</b><br>";
echo "Tamaño total ficheros: <b>".
number_format($acumulado_tamanho, 0,",",".") . "
Kb.</b><br>";
echo "</div>";
echo "<div style='min-height: 60px;'></div>";
} else {
?>
<form name="formulario" id="formulario"
method="post" action="<?php echo $_SERVER['PHP_SELF'];
?>">
<br /><h2>Informe del Alojamiento por directorios (Número
de Archivos y Tamaño)</h2>
<br />Nivel de directorios a mostrar: <input type="text"
name="nivel" id="nivel" value="3"><br
/><br />
<input type="checkbox" name="comenzar_nivel_inferior"
value="si" checked="checked"/> Comenzar en nivel de
directorio inmediatamente inferior a la ubicación de este
módulo PHP<br />(<?php echo dirname(__FILE__) ?>)<br
/><br />
<input type="submit" name="comenzar"
id="comenzar" value="Comenzar proceso"><br /><br
/>
</form>
<?php
}
function FileCount($dir, $mostrar_hasta_nivel, $nivel_directorio_raiz){
global $count;
global $count_anterior;
global $suma_tamanho;
global $acumulado_tamanho;
$arr=explode('&',$dir);
foreach($arr as $val){
global $ruta_actual;
if(is_dir($val) && file_exists($val)){
global $total_directorio;
global $numero_fila;
$total_directorio = 0;
$ob=scandir($val);
foreach($ob as $file){
if($file=="."||$file==".."){
continue;
}
$file=$val."/".$file;
if(is_file($file)){
$count++;
$suma_tamanho = $suma_tamanho + filesize($file)/1024;
$acumulado_tamanho = $acumulado_tamanho + filesize($file)/1024;
$total_directorio++;
} elseif(is_dir($file)){
FileCount($file, $mostrar_hasta_nivel, $nivel_directorio_raiz);
}
}
$nivel_directorio = count(explode("/", $val)) - 1;
if ($nivel_directorio > $mostrar_hasta_nivel) {
} else {
$atributo_fila = (($numero_fila%2)==1 ? "background-color:#ffffff;" :
"background-color:#f2f2f2;");
echo "<tr
style='".$atributo_fila."'><td>".$numero_fila."</td><td>".$val." </td><td
align='center'>".$nivel_directorio."</td><td align='right'
style='color:#0000ff;'>".number_format(($count -
$count_anterior),0,",",".")."</td><td
align='right'>".number_format($count,0,",",".")."</td><td
align='right'>".number_format($total_directorio,0,",",".")."</td><td
align='right'
style='color:#0000ff;'>".number_format($suma_tamanho,0,",",".")."
Kb.</td><td
align='right'>".number_format($acumulado_tamanho,0,",",".")."
Kb.</td></tr>";
$count_anterior = $count;
$suma_tamanho = 0;
$numero_fila++;
}
}
}
}
?>