![]() |
Вариант решения проблемы IIS FTP и символ "я"
Добрый день, уважаемые форумчане.
Все знают, эту проблему, что не возможно скачать файл с FTP если в его имени (или имени папки) содержится буква "я". Для протокола этот символ (его код) говорит о конце передачи. При этом на символ "Я" такой реакции нет. План зрел не долго, захотел в ручную переименовать все файлы во всех FTP поддиректориях... Но организовав поиск по маске *я, понял, что переименовать 2500 файлов не смогу. Тогда подошел к проблеме иначе, а именно написать VB скрипт, который сам пройдется по подпапкам и заменит символ "я" на "Я". Вот этим и занялся, это и помогло! :) Кому такой вариант решения проблемы приемлем, то добро пожаловать и прошу, пользуйтесь! :) '================================================================= 'Скрипт, решающий проблемы, связанные с IIS FTP и буквой "я" | 'скрипт проходит по всем поддиректориям от указанной директории | 'и заменяет букву "я" на "Я" во всех именах файлов и дерикториях. | '================================================================= Sub RunSubFolders (FolderInto) 'процедура переименования Set FSO = CreateObject("Scripting.FileSystemObject") Set Folder = FSO.GetFolder(FolderInto) For Each iFile in Folder.Files 'цикл проверки и переименования всех файлов в текущей директории NameFile = Mid(iFile, InStrRev(iFile,"\")+1) If Detect_ya(NameFile) Then On Error Resume Next FSO.MoveFile iFile, Mid(iFile,1,InStrRev(iFile,"\")) + convert_ya(NameFile) End If Next On Error Resume Next For Each iSubFolder in Folder.SubFolders 'цикл проверки и переименования всех папок в текущей директории NameFolder = Mid(iSubFolder, InStrRev(iSubFolder,"\")+1) If Detect_ya(NameFolder) Then On Error Resume Next FSO.MoveFolder iSUbFolder, Mid(iSubFolder,1,InStrRev(iSubFolder,"\")) + convert_ya(NameFolder) End If RunSubFolders (iSUbFolder) Next End Sub function convert_ya(str_in) 'функция повышения регистора буквы "я" str_out = Replace(str_in,"я","Я") convert_ya = str_out end function function Detect_ya(Str_in) 'функция обнаружения буквы "я" в строке If (InStr(Str_in,"я")<>0) then Detect_ya = True else Detect_ya = False End If End Function RootFTPFolder = "C:\Test_Folder" 'Корневая директория FTP сервера Call RunSubFolders (RootFTPFolder) У меня переименование 2500 файлов и папок заняло 5 минут! Как дальнейшее решние, что бы не объяснять пользователям, что с "Я" создаватьимена файлов не стоит, я просто запланировал выполнение этого скрипта 1 раз в сутки, ночью! :) Всем удачи и спасибо за внимание. |
Время: 03:04. |
Время: 03:04.
© OSzone.net 2001-