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
Ainda existem alguns casos em que esse problema não pode ser exibido. Procurei no msdn e não encontrei uma solução melhor. Por enquanto, desisti de continuar a pesquisa. .
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="VBSCRIPT" CODEPAGE="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
'URL:
'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>