Contar archivos de una web.

11/12/2006 - 22:17 por ~jose~ | Informe spam
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

Preguntas similare

Leer las respuestas

#6 ~jose~
23/12/2006 - 17:35 | Informe spam
Hola uqe tal?
He probado tu código y si que funciona muy bien,
lo único que me gustaria ver el resultado en la primera fila
archivos,en la segunda fila (en vez de seguido) el tamaño en kb y en
la 3 fila en MB.
He hecho pruebas dividiendo los bytes por 1024 pero me salen muchos
decimales y con los MB no me sale el cálculo bien y también con
muchos decimales.
He estado probando con el 'FormatNumber' pero sin exito.
El "problema" que tengo es que al subir los archivos con el frontpage,
me crea carpetas ocultas llamadas '_vti_cnf' y claro, tengo que poner
un montón de excepciones para que no me cuente estas carpetas, si
hubiera alguna forma de no contar las carpetas ocultas estaria genial.

Venga muchas gracias y felices fiestas.
Un saludo,
jose

PD: la página que estoy haciendo pruebas es:
http://www.carpinjose.com/prueba2.asp


Sergio ha escrito:

Te mando el siguiente código y tienes que tener en cuenta lo
siguiente:

La variable m_strFolderException es una lista de valores separados por
coma con los nombres de las carpetas que no quieras incluir en la
operación. Si son todas, simplemente deja vacía la cadena ""

Es importante que le des una ruta inicial, al estar las páginas
colgadas en un hosting y no saber cual es la ruta exacta, deberías
escribir algo así como Server.MapPath("\"), pero no estoy seguro
porque no tengo en casa un IIS(servidor de páginas web de Microsoft)
para probarlo

Y si falla algo... lo arreglas ;-)

<%@ LANGUAGE=VBScript %>
<%
Dim m_objFso
Dim m_objFolder
Dim m_objSubFolder
Dim m_lngFiles
Dim m_lngFolderSize
Dim m_strFolderException

m_strFolderException = "components,interaction" 'Nombres de carpeta
separados por coma
m_lngFiles = 0
m_lngFolderSize = 0

Set m_objFso = Server.CreateObject("Scripting.FileSystemObject")
Set m_objFolder = m_objFso.GetFolder("C:\Inetpub\iissamples\sdk\asp")
'Ruta carpeta inicial

SetCounters m_objFolder

Response.Write "Tamaño (bytes): " & m_lngFolderSize
Response.Write "Ficheros: " & m_lngFiles

Set m_objFolder = Nothing
Set m_objFso = Nothing

Sub SetCounters(ByVal objFolder)
Dim objFile
Dim objSubFolder

m_lngFiles = m_lngFiles + objFolder.Files.Count
For Each objFile In objFolder.Files
m_lngFolderSize= m_lngFolderSize + objFile.Size
Next
For Each objSubFolder In objFolder.SubFolders
If InStr(1, UCase(m_strFolderException), UCase(objSubFolder.Name)) > 0 Then
SetCounters objSubFolder
End If
Next
End Sub
%>

~jose~ ha escrito:

> Hola que tal?
> el código que me has mandado me lanzaba error en la linea 9, pero al
> sustituir "End" por "End If" me ha funcionado perfectamente, puedes ver
> el resultado en www.carpinjose.com/prueba.asp
> Te preguntarás que como he sabido solucionarlo habiendo dicho que no
> se nada de "ASP" lo que pasa que se un poco (no mucho eh!) de VBE y he
> visto que se asemeja.
> Sobre lo que pedia necesitaria poder elegir las carpetas a contabilizar
> ya que tengo alguna capeta donde hago pruebas y quisera que no se
> contaran.
>
> Bueno, un saludo y muchas gracias, vale?
>
>
> Sergio ha escrito:
>
> > Hola
> >
> > Antes de tirar código, cuelga una página .asp (da igual el nombre) en
> > tu sitio web, con el siguiente código, y verifica que puedes utilizar
> > este objeto (es que sino, no me curro el código) ;-)
> >
> > <%@ LANGUAGE=VBScript %>
> > <%
> > Dim objFso
> > On Error Resume Next
> > Set objFso = Server.CreateObject("Scripting.FileSystemObject")
> > If Err.Number <> 0 Then
> > Response.Write "Error"
> > Else
> > Response.Write "OK"
> > End
> > Set objFso = Nothing
> > %>
> >
> > Nos cuentas luego.
> > Un saludo.
> >
> >
> > ~jose~ ha escrito:
> >
> > > Hola Sergio, gracias por contestar,
> > > lo que pasa es que yo de programación en ASP cero patatero,
> > > yo si no es mucho pedir pido el código completo, o mejor dicho la
> > > página web completa.
> > > Me dá igual si es en html, en asp, php, cgi-bin o cualquier otro
> > > lenguaje, simplemente que me muestre la cantidad de archivos y el total
> > > de megas en mi espacio web.
> > > PD: Me refiero a un espacio web de un hosting y no de una intranet.
> > >
> > > Saludos
> > > Sergio ha escrito:
> > >
> > > > Mirate el objeto Scripting.FileSystemObject.
> > > > Tiene métodos sencillos para enumerar directorios y ficheros, así
> > > > como saber sus propiedades (p. ej. tamaño)
> > > > Si estas en intranet y no en un hosting (donde a veces este componente
> > > > esta deshabilitado) no tendrás problema para utilizarlo.
> > > > Espero que te ayude.
> > > >
> > > > On 11 dic, 22:17, "~jose~" wrote:
> > > > > 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
Respuesta Responder a este mensaje
#7 nilopa
05/09/2016 - 23:41 | Informe spam
~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&ntilde;o</td><td align='right'>Acumulado tama&ntilde;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&ntilde;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&uacute;mero de Archivos y Tama&ntilde;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&oacute;n de este m&oacute;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."&nbsp;&nbsp;&nbsp;&nbsp;</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++;
}

}
}
}
?>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida