<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: вариант решения проблемы FTP IIS 6.0 и буквы "я"]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=2597&amp;type=atom" />
	<updated>2008-12-18T19:15:08Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=2597</id>
		<entry>
			<title type="html"><![CDATA[VBScript: вариант решения проблемы FTP IIS 6.0 и буквы "я"]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=17381#p17381" />
			<content type="html"><![CDATA[<p>Все знают проблему, что не возможно скачать файл с FTP, если в его имени (или имени папки) содержится буква &quot;я&quot;. Для протокола этот символ (его код) говорит о конце передачи. При этом на символ &quot;Я&quot; такой реакции нет. План зрел не долго, захотел в ручную переименовать все файлы во всех FTP поддиректориях... Но организовав поиск по маске *я, понял, что переименовать 2500 файлов не смогу. Тогда подошел к проблеме иначе, а именно, написал vb-скрипт, который сам пройдется по подпапкам и заменит символ &quot;я&quot; на &quot;Я&quot;. И это помогло!&nbsp; Кому такой вариант решения проблемы приемлем, добро пожаловать, и прошу, пользуйтесь! <br /></p><div class="codebox"><pre><code>&#039;=================================================================
&#039;Скрипт, решающий проблемы, связанные с IIS FTP и буквой &quot;я&quot; |
&#039;скрипт проходит по всем поддиректориям от указанной директории |
&#039;и заменяет букву &quot;я&quot; на &quot;Я&quot; во всех именах файлов и дерикториях. |
&#039;=================================================================


Sub RunSubFolders (FolderInto) &#039;процедура переименования

Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set Folder = FSO.GetFolder(FolderInto)

For Each iFile in Folder.Files &#039;цикл проверки и переименования всех файлов в текущей директории
NameFile = Mid(iFile, InStrRev(iFile,&quot;\&quot;)+1)
If Detect_ya(NameFile) Then
On Error Resume Next
FSO.MoveFile iFile, Mid(iFile,1,InStrRev(iFile,&quot;\&quot;)) + convert_ya(NameFile)
End If
Next

On Error Resume Next 
For Each iSubFolder in Folder.SubFolders &#039;цикл проверки и переименования всех папок в текущей директории


NameFolder = Mid(iSubFolder, InStrRev(iSubFolder,&quot;\&quot;)+1)
If Detect_ya(NameFolder) Then
On Error Resume Next
FSO.MoveFolder iSUbFolder, Mid(iSubFolder,1,InStrRev(iSubFolder,&quot;\&quot;)) + convert_ya(NameFolder)
End If
RunSubFolders (iSUbFolder)
Next
End Sub


function convert_ya(str_in) &#039;функция повышения регистора буквы &quot;я&quot;
str_out = Replace(str_in,&quot;я&quot;,&quot;Я&quot;)
convert_ya = str_out
end function

function Detect_ya(Str_in) &#039;функция обнаружения буквы &quot;я&quot; в строке
If (InStr(Str_in,&quot;я&quot;)&lt;&gt;0) then
Detect_ya = True
else
Detect_ya = False
End If
End Function


RootFTPFolder = &quot;C:\Test_Folder&quot; &#039;Корневая директория FTP сервера
Call RunSubFolders (RootFTPFolder)</code></pre></div><p>У меня переименование 2500 файлов и папок заняло 5 минут.<br />Как дальнейшее решение, чтобы не объяснять пользователям, что с &quot;Я&quot; создавать файлы не стоит, я просто запланировал выполнение этого скрипта 1 раз в сутки, ночью.</p>]]></content>
			<author>
				<name><![CDATA[xenos1303]]></name>
			</author>
			<updated>2008-12-18T19:15:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=17381#p17381</id>
		</entry>
</feed>
