Algumas pastas especiais asp não podem ser totalmente exibidas, mas podem ser excluídas através do caminho unc, mas a premissa é que o caminho exato deve ser conhecido. Atualmente, ainda existem alguns casos que não podem ser exibidos. parece que não vejo uma solução melhor, desista da pesquisa por enquanto, e amigos que conhecem a solução completa podem querer responder.
Primeiro, anexe bat para criar um diretório malformado. Copie e salve o seguinte código como a.bat:
Copie o código do código da seguinte forma:
md aux//
md com1 //
md com2 //
md prn//
md con//
md nulo//
md ponto...//
md onedot..//
código do programa
Copie o código do código da seguinte forma:
<%@LANGUAGE=PÁGINA DE CÓDIGO VBSCRIPT=65001%>
<%
opção explícita
resposta.charset = UTF-8
sessão.codepage = 65001
sessão.timeout = 1440
servidor.scripttimeout = 9999
'****************************
'Nome: classe da lista de diretórios
'Autor: Yipin
'Data: 28/04/2010
'Site: www.vevb.com
'Descrição: Classe de lista de diretórios, suporta nomes de diretórios mal formados
'****************************
Classe FsoCls
Privado Fso
FsoObj público
Subclasse Privada_Initialize
Definir Fso=CreateObject(Scripting.FileSystemObject)
Definir FsoObj=Fso
Finalizar sub
Subclasse Privada_Terminate
Definir Fso=Nada
Definir FsoObj=Nada
Finalizar sub
Função IsFolderExists(FolderPath)
Se fso.FolderExists(FolderPath) Então
IsFolderExists = verdadeiro
Outro
IsFolderExists = falso
Terminar se
Função final
Função FolderItem(ByVal FolderDir)
Se Instr(FolderDir,:/)>0 Então
PastaDir=//?/&FolderDir&/
Outro
FolderDir=//?/&Server.MapPath(FolderDir)&/
Terminar se
Se IsFolderExists(FolderDir) = Falso então
FolderItem=Falso
Função de saída
Terminar se
Dim FolderObj,FolderList,F,i
eu=1
Definir FolderObj=Fso.GetFolder(FolderDir)
Definir FolderList=FolderObj.SubFolders
FolderItem=Número total de diretórios: &FolderObj.SubFolders.Count&<hr> & vbcrlf
FolderItem=FolderItem&Número total de arquivos: &FolderObj.Files.count&<hr> & vbcrlf
Para cada F em FolderList
'Resposta.Write F.ShortName
'Resposta.Write (instr(1,F.ShortName,~,1))
Se IsFolderExists(FolderDir&F.Name) = True Então Response.Write (T<br> & vbcrlf)
If(instr(1,F.Nome,.,0)>0) Então
Resposta.Write(T)
F.Nome=Substituir(F.Nome,.,-)
Terminar se
FolderItem=FolderItem&i&├─Folder→&F.Name&<br> & vbcrlf
eu=eu+1
Próximo
Definir FolderList=Nada
Definir FolderObj=Nada
Função final
Fim da aula
%>
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml xml:lang=zh-cn>
<cabeça>
<meta http-equiv=Content-Type content=text/html; charset=utf-8 />
<title>A classe de lista de diretórios suporta nomes de diretório malformados</title>
</head>
<corpo>
<%
Dim F: Definir F = novos FsoCls
Response.write F.FolderItem(/)
%>
</body>
</html>