<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: Переименование в транслит файлов всей структуры каталога]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=12150&amp;type=atom" />
	<updated>2016-11-21T03:37:39Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=12150</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Переименование в транслит файлов всей структуры каталога]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=109249#p109249" />
			<content type="html"><![CDATA[<p>Cпасибо.</p>]]></content>
			<author>
				<name><![CDATA[mamay_83]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34330</uri>
			</author>
			<updated>2016-11-21T03:37:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=109249#p109249</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Переименование в транслит файлов всей структуры каталога]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=109205#p109205" />
			<content type="html"><![CDATA[<p>Всё до <em>Function Rus2Lat(strRus)</em> заменяйте:<br /></p><div class="codebox"><pre><code>Option Explicit
Dim tmpFolder, objFSO, objShell, objRegExp

tmpFolder = &quot;c:\tmp\&quot;

Set objFSO    = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objShell  = CreateObject(&quot;Shell.Application&quot;)
Set objRegExp = New Regexp : objRegExp.Global = True
objRegExp.Pattern = &quot;[().,]&quot;

FilesRename tmpFolder
WScript.Echo &quot;Готово&quot;

Sub FilesRename(tmpPath)
	Dim Items, frFile, frSubFolder, frName
	Set Items = objShell.NameSpace(tmpPath).Items
	Items.Filter 8384, &quot;*.jpg&quot;
	If Items.Count Then
		For Each frFile in Items
			frName = objRegExp.Replace(Replace(LCase(Rus2Lat(objFSO.GetFileName(tmpPath) &amp;_
			&quot;_&quot; &amp; objFSO.GetBaseName(frFile))), &quot; &quot;, &quot;_&quot;), &quot;&quot;) &amp; &quot;.jpg&quot;
			If Not objFSO.FileExists(objFSO.BuildPath(tmpPath, frName)) Then frFile.Name = frName
		Next
	End If : Items.Filter 8352, &quot;*&quot;
	For Each frSubFolder in Items : FilesRename frSubFolder.Path : Next
End Sub</code></pre></div><p><strong><span style="color: green">Заголовок исправлен на тематический.</span></strong></p>]]></content>
			<author>
				<name><![CDATA[Flasher]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27593</uri>
			</author>
			<updated>2016-11-17T12:56:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=109205#p109205</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: Переименование в транслит файлов всей структуры каталога]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=109201#p109201" />
			<content type="html"><![CDATA[<p>Здравствуйте. Есть скрипт который ищет файлы в папке и подпапках и переименовывает файлы как имя папки + имя файла, а также переводит имя в транслит и удоляет символы. Проблема в том что если файлов грубо говоря десять или меньше все работает как надо, а если файлов много то переименование идет неправельно как т как имя папки+имя папки+имя папки+имя папки+имя папки+имя папки+имя файла. Скрипт вываливается с ошибкой не найден путь. Подскажите как это исправить или в какую сторону смотреть.</p><p>Сам скрипт:<br />(Чтобы работала функция Rus2Lat файл скрипта должен быть в кодировке Windows-1251)<br /></p><div class="codebox"><pre><code>
tmpFolder = &quot;c:\tmp\&quot;

FilesRename tmpFolder

WScript.Echo &quot;Готово&quot;

Function FilesRename(tmpPath)
 Dim frFolder, frFile, frSubFolder, frName
 If Len(tmpPath) &lt;&gt; 0 Then
    Set objFSO = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)    
    If objFSO.FolderExists(tmpPath) Then
		Set frFolder = objFSO.GetFolder(tmpPath)
        For Each frFile In frFolder.Files
			If UCase(objFSO.GetExtensionName(frFile.Name)) = UCase(&quot;jpg&quot;) Then
				frName = LCase(Rus2Lat(frFolder.Name))
				frName = frName &amp; &quot;_&quot; &amp; LCase(Rus2Lat(objFSO.GetBaseName(frFile.Name)))
				frName = Replace (frName,&quot; &quot;,&quot;_&quot;)
			   frName = Replace (frName,&quot;)&quot;,&quot;&quot;)
			   frName = Replace (frName,&quot;(&quot;,&quot;&quot;)
			   frName = Replace (frName,&quot;,&quot;,&quot;&quot;)
			   frName = Replace (frName,&quot;.&quot;,&quot;&quot;)
			   frFile.Name = frName &amp; &quot;.jpg&quot;
			End If
		Next
	End If	
			For Each frSubFolder In frFolder.SubFolders
			FilesRename(frSubFolder)
			Next
 End If 
End Function

Function Rus2Lat(strRus)
    Dim i
    Dim strTemp
    Dim strLat
    For i = 1 To Len(strRus)
        strTemp = Mid(strRus, i, 1)             
        Select Case strTemp
            Case &quot;а&quot;
                strLat = strLat &amp; &quot;a&quot;
            Case &quot;А&quot;
                strLat = strLat &amp; &quot;A&quot;
            Case &quot;б&quot;
                strLat = strLat &amp; &quot;b&quot;
            Case &quot;Б&quot;
                strLat = strLat &amp; &quot;B&quot;
            Case &quot;в&quot;
                strLat = strLat &amp; &quot;v&quot;
            Case &quot;В&quot;
                strLat = strLat &amp; &quot;V&quot;
            Case &quot;г&quot;
                strLat = strLat &amp; &quot;g&quot;
            Case &quot;Г&quot;
                strLat = strLat &amp; &quot;G&quot;
            Case &quot;д&quot;
                strLat = strLat &amp; &quot;d&quot;
            Case &quot;Д&quot;
                strLat = strLat &amp; &quot;D&quot;
            Case &quot;е&quot;
                strLat = strLat &amp; &quot;e&quot;
            Case &quot;Е&quot;
                strLat = strLat &amp; &quot;E&quot;
            Case &quot;ё&quot;
                strLat = strLat &amp; &quot;yo&quot;
            Case &quot;Ё&quot;
                strLat = strLat &amp; &quot;Yo&quot;
            Case &quot;ж&quot;
                strLat = strLat &amp; &quot;zh&quot;
            Case &quot;Ж&quot;
                strLat = strLat &amp; &quot;Zh&quot;
            Case &quot;з&quot;
                strLat = strLat &amp; &quot;z&quot;
            Case &quot;З&quot;
                strLat = strLat &amp; &quot;Z&quot;
            Case &quot;и&quot;
                strLat = strLat &amp; &quot;i&quot;
            Case &quot;И&quot;
                strLat = strLat &amp; &quot;I&quot;
            Case &quot;й&quot;
                strLat = strLat &amp; &quot;i&quot;
            Case &quot;Й&quot;
                strLat = strLat &amp; &quot;I&quot;
            Case &quot;к&quot;
                strLat = strLat &amp; &quot;k&quot;
            Case &quot;К&quot;
                strLat = strLat &amp; &quot;K&quot;
            Case &quot;л&quot;
                strLat = strLat &amp; &quot;l&quot;
            Case &quot;Л&quot;
                strLat = strLat &amp; &quot;L&quot;
            Case &quot;м&quot;
                strLat = strLat &amp; &quot;m&quot;
            Case &quot;М&quot;
                strLat = strLat &amp; &quot;M&quot;
            Case &quot;н&quot;
                strLat = strLat &amp; &quot;n&quot;
            Case &quot;Н&quot;
                strLat = strLat &amp; &quot;N&quot;
            Case &quot;о&quot;
                strLat = strLat &amp; &quot;o&quot;
            Case &quot;О&quot;
                strLat = strLat &amp; &quot;O&quot;
            Case &quot;п&quot;
                strLat = strLat &amp; &quot;p&quot;
            Case &quot;П&quot;
                strLat = strLat &amp; &quot;P&quot;
            Case &quot;р&quot;
                strLat = strLat &amp; &quot;r&quot;
            Case &quot;Р&quot;
                strLat = strLat &amp; &quot;R&quot;
            Case &quot;с&quot;
                strLat = strLat &amp; &quot;s&quot;
            Case &quot;С&quot;
                strLat = strLat &amp; &quot;S&quot;
            Case &quot;т&quot;
                strLat = strLat &amp; &quot;t&quot;
            Case &quot;Т&quot;
                strLat = strLat &amp; &quot;T&quot;
            Case &quot;у&quot;
                strLat = strLat &amp; &quot;u&quot;
            Case &quot;У&quot;
                strLat = strLat &amp; &quot;U&quot;
            Case &quot;ф&quot;
                strLat = strLat &amp; &quot;f&quot;
            Case &quot;Ф&quot;
                strLat = strLat &amp; &quot;F&quot;
            Case &quot;х&quot;
                strLat = strLat &amp; &quot;kh&quot;
            Case &quot;Х&quot;
                strLat = strLat &amp; &quot;Kh&quot;
            Case &quot;ц&quot;
                strLat = strLat &amp; &quot;ts&quot;
            Case &quot;Ц&quot;
                strLat = strLat &amp; &quot;Ts&quot;
            Case &quot;ч&quot;
                strLat = strLat &amp; &quot;ch&quot;
            Case &quot;Ч&quot;
                strLat = strLat &amp; &quot;Ch&quot;
            Case &quot;ш&quot;
                strLat = strLat &amp; &quot;sh&quot;
            Case &quot;Ш&quot;
                strLat = strLat &amp; &quot;Sh&quot;
            Case &quot;щ&quot;
                strLat = strLat &amp; &quot;sch&quot;
            Case &quot;Щ&quot;
                strLat = strLat &amp; &quot;Sch&quot;
            Case &quot;ъ&quot;
                strLat = strLat &amp; &quot;&quot;
            Case &quot;Ъ&quot;
                strLat = strLat &amp; &quot;&quot;
            Case &quot;ы&quot;
                strLat = strLat &amp; &quot;y&quot;
            Case &quot;Ы&quot;
                strLat = strLat &amp; &quot;Y&quot;
            Case &quot;ь&quot;
                strLat = strLat &amp; &quot;&quot;
            Case &quot;Ь&quot;
                strLat = strLat &amp; &quot;&quot;
            Case &quot;э&quot;
                strLat = strLat &amp; &quot;e&quot;
            Case &quot;Э&quot;
                strLat = strLat &amp; &quot;E&quot;
            Case &quot;ю&quot;
                strLat = strLat &amp; &quot;yu&quot;
            Case &quot;Ю&quot;
                strLat = strLat &amp; &quot;Yu&quot;
            Case &quot;я&quot;
                strLat = strLat &amp; &quot;ya&quot;
            Case &quot;Я&quot;
                strLat = strLat &amp; &quot;Ya&quot;
            Case Else
                &#039;unknown symbol
                strLat = strLat &amp; strTemp
        End Select
    Next
    Rus2Lat = strLat
	End Function
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[mamay_83]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34330</uri>
			</author>
			<updated>2016-11-17T04:32:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=109201#p109201</id>
		</entry>
</feed>
