Algunas carpetas especiales asp no se pueden mostrar completamente, pero se pueden eliminar a través de la ruta unc, pero la premisa es que se debe conocer la ruta exacta. Actualmente, todavía hay algunos casos que no se pueden mostrar. Parece que no veo una solución mejor. Deje de investigar por el momento y los amigos que conozcan la solución completa tal vez deseen responder.
Primero, adjunte bat para crear un directorio con formato incorrecto. Copie y guarde el siguiente código como.bat:
Copie el código de código de la siguiente manera:
md auxiliar//
mdcom1//
mdcom2//
md prn//
md con//
md nulo//
md punto...//
md onedot..//
código de programa
Copie el código de código de la siguiente manera:
<%@LANGUAGE=PÁGINA DE CÓDIGOS VBSCRIPT=65001%>
<%
opción explícita
respuesta.charset = UTF-8
sesión.página de códigos = 65001
sesión.tiempo de espera = 1440
servidor.scripttimeout = 9999
'******************************
'Nombre: clase de lista de directorios
'Autor: Yipin
'Fecha: 2010-4-28
'Sitio web: www.vevb.com
'Descripción: Clase de lista de directorios, admite nombres de directorio con formato incorrecto
'******************************
Clase FsoCls
Fso privado
FsoObj público
Subclase privada_Inicializar
Establecer Fso=CreateObject(Scripting.FileSystemObject)
Establecer FsoObj=Fso
Subtítulo final
Subclase privada_Terminar
Establecer Fso=Nada
Establecer FsoObj=Nada
Subtítulo final
La función esCarpetaExiste(RutaCarpeta)
Si fso.FolderExists (FolderPath) Entonces
IsFolderExists = verdadero
Demás
IsFolderExists = falso
Terminar si
Función final
Elemento de carpeta de función (ByVal FolderDir)
Si Instr(FolderDir,:/)>0 Entonces
CarpetaDir=//?/&CarpetaDir&/
Demás
FolderDir=//?/&Server.MapPath(FolderDir)&/
Terminar si
Si IsFolderExists(FolderDir) = False Entonces
Elemento de carpeta=Falso
Función de salida
terminar si
Dim FolderObj,FolderList,F,i
yo=1
Establecer FolderObj=Fso.GetFolder(FolderDir)
Establecer FolderList=FolderObj.SubFolders
FolderItem=Número total de directorios: &FolderObj.SubFolders.Count&<hr> & vbcrlf
FolderItem=FolderItem&Número total de archivos: &FolderObj.Files.count&<hr> & vbcrlf
Para cada F en la lista de carpetas
'Respuesta.Escribir F.Nombre Corto
'Respuesta.Escribir (instr(1,F.NombreCorto,~,1))
Si IsFolderExists(FolderDir&F.Name) = True Entonces Response.Write (T<br> & vbcrlf)
Si(instr(1,F.Name,.,0)>0) Entonces
Respuesta.Escribir(T)
F.Nombre=Reemplazar(F.Nombre,.,-)
terminar si
FolderItem=FolderItem&i&├─Carpeta→&F.Nombre&<br> & vbcrlf
yo=yo+1
Próximo
Establecer FolderList=Nada
Establecer FolderObj=Nada
Función final
Fin de clase
%>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transicional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml xml:lang=zh-cn>
<cabeza>
<meta http-equiv=Tipo de contenido content=text/html;charset=utf-8 />
<title>La clase de lista de directorios admite nombres de directorio con formato incorrecto</title>
</cabeza>
<cuerpo>
<%
Dim F: Establecer F = nuevos FsoCls
Respuesta.escribir F.FolderItem(/)
%>
</cuerpo>
</html>