<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: вариант решения проблемы FTP IIS 6.0 и буквы "я"]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=2597</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=2597&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: вариант решения проблемы FTP IIS 6.0 и буквы "я"».]]></description>
		<lastBuildDate>Thu, 18 Dec 2008 19:15:08 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[VBScript: вариант решения проблемы FTP IIS 6.0 и буквы "я"]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=17381#p17381</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (xenos1303)]]></author>
			<pubDate>Thu, 18 Dec 2008 19:15:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=17381#p17381</guid>
		</item>
	</channel>
</rss>
