Некоторые специальные папки asp не могут быть отображены полностью, но их можно удалить через путь unc, но предполагается, что точный путь должен быть известен.
В некоторых случаях эта проблема не может быть отображена. Я просмотрел msdn и, похоже, не нашел лучшего решения. На данный момент я отказался от продолжения исследования. Любой, кто знает полное решение, может пожелать ответить. .
Сначала прикрепите bat, чтобы создать неверный каталог. Скопируйте и сохраните следующий код как a.bat:
Скопируйте код кода следующим образом:
мд вспомогательный //
мкр com1//
мк2//
мкр прн//
мкр.//
MD ноль//
мкр точка...//
мк онедот..//
программный код
Скопируйте код кода следующим образом:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
опция явная
ответ.charset = "UTF-8"
сеанс.кодовая страница = 65001
сеанс.таймаут = 1440
server.scripttimeout = 9999
'***************************
'Имя: класс списка каталогов
'Автор: Ипин
'Дата: 28 апреля 2010 г.
'URL-адрес:
'Описание: Класс списка каталогов, поддерживает неверные имена каталогов.
'***************************
Класс ФсоКлс
Рядовой ФСО
Публичный FsoObj
Частный подкласс_инициализировать
Set Fso=CreateObject("Scripting.FileSystemObject")
Установите FsoObj=Fso
Конец субтитра
Частный подкласс_Terminate
Установить Fso=Ничего
Установить FsoObj=Ничего
Конец субтитра
Функция IsFolderExists(FolderPath)
Если fso.FolderExists(FolderPath) Тогда
Исфолдерексистс = истина
Еще
Исфолдерексистс = ложь
Конец, если
Конечная функция
Функция FolderItem(ByVal FolderDir)
Если Instr(FolderDir,":/")>0 Тогда
FolderDir="//?/"&FolderDir&"/"
Еще
FolderDir="//?/"&Server.MapPath(FolderDir)&"/"
Конец, если
Если IsFolderExists(FolderDir) = False Тогда
FolderItem=False
Выход из функции
Конец, если
Тусклый FolderObj, FolderList, F, i
я = 1
Установить FolderObj=Fso.GetFolder(FolderDir)
Установить FolderList=FolderObj.SubFolders
FolderItem="Общее количество каталогов:"&FolderObj.SubFolders.Count&"<hr>" & vbcrlf
FolderItem=FolderItem&"Общее количество файлов:"&FolderObj.Files.count&"<hr>" & vbcrlf
Для каждого F в списке папок
'Response.Write F.ShortName
'Response.Write (instr(1,F.ShortName,"~",1))
Если IsFolderExists(FolderDir&F.Name) = True, то Response.Write ("T<br>" & vbcrlf)
Если(инстр(1,F.Name,".",0)>0) Тогда
Ответ.Запись("Т")
F.Name=Replace(F.Name,".","-")
Конец, если
FolderItem=FolderItem&i&"├─Folder→"&F.Name&"<br>" & vbcrlf
я=я+1
Следующий
Установить список_папок=Ничего
Установить FolderObj=Ничего
Конечная функция
Конечный класс
%>
<!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">
<голова>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Класс списка каталогов поддерживает неверные имена каталогов</title>
</голова>
<тело>
<%
Dim F: Установить F = новые FsoCls
Response.write F.FolderItem("/")
%>
</тело>
</html>