<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: Переименование папок по маске]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=9789</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9789&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Переименование папок по маске».]]></description>
		<lastBuildDate>Fri, 25 Sep 2020 19:15:22 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: Переименование папок по маске]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142315#p142315</link>
			<description><![CDATA[<p>Можно так:<br /></p><div class="codebox"><pre><code>Option Explicit

Dim strSourceFolder

Dim objRootFolder
Dim i
Dim strSubFolder


strSourceFolder = &quot;c:\test&quot;

With WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)
	If .FolderExists(strSourceFolder) Then
		Set objRootFolder = .GetFolder(strSourceFolder)
		
		For i = 1000 To 4000
			strSubFolder = .BuildPath(.BuildPath(objRootFolder.Path, CStr(i)), &quot;number&quot;)
			
			If .FolderExists(strSubFolder) Then
				.GetFolder(strSubFolder).Name = &quot;userNumber&quot;
			Else
				WScript.Echo &quot;Can&#039;t find subfolder [&quot; &amp; strSubFolder &amp; &quot;].&quot;
			End If
		Next
		
		Set objRootFolder = Nothing
	Else
		WScript.Echo &quot;Source folder [&quot; &amp; strSourceFolder &amp; &quot;] not found.&quot;
		WScript.Quit 1
	End If
End With

WScript.Quit 0
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 25 Sep 2020 19:15:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142315#p142315</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Переименование папок по маске]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142268#p142268</link>
			<description><![CDATA[<p>Хочу еще добавить, что уровень залегания папки &quot;number&quot; всегда один и тот же. Если папку &quot;test&quot; считаем корнем, то уровень залегания - вторая.<br />Например:<br />C:\test\1001\number\533\<br />C:\test\1002\number\567\<br />C:\test\1003\number\235\<br />C:\test\1004\number\878\<br />и т.д.<br />То есть первая папка после &quot;test&quot;, которая числовая - всегда переменная<br />Вторая папка &quot;number&quot;, которую нужно переименовать - всегда постоянная.</p><p>Нашел аналогичное решение с помощью батча. Но хотелось бы также реализовать через VBS.</p><div class="codebox"><pre><code>
@echo off
for /f &quot;tokens=* delims=&quot; %%a in (&#039;dir /ad/b &quot;C:\test&quot;&#039;) do (
    ren &quot;C:\test\%%a\number&quot; &quot;userNumber&quot;
)
pause
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (smarton)]]></author>
			<pubDate>Wed, 23 Sep 2020 06:16:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142268#p142268</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Переименование папок по маске]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142264#p142264</link>
			<description><![CDATA[<p><strong>alexii</strong>,<br />есть список папок с числовым значением от 1000 до 4000 (этот список папок я положил в общую папку &quot;test&quot; на диск C),<br />в каждой папке с числовым значением лежит подпапка &quot;number&quot;,<br />в каждой подпапке &quot;number&quot; лежат подпапки с другими именами, но они нас не интересуют.</p><p>Задача: просканировать все папки и подпапки, которые лежат по пути &quot;C:\test&quot;, найти там подпапку c именем &quot;number&quot; и переименовать ее в &quot;userNumber&quot;<br />Скрипт, написанный выше, переименовывает папки верхнего уровня (то есть которые лежат в корне &quot;C:\test&quot;), но не переименовывает подпапки (субпапки), которые лежат глубже, в других папках. Нужно, чтобы скрипт сканировал все подпапки и находил нужную для ее переименования.<br />Буду очень благодарен помощи.</p>]]></description>
			<author><![CDATA[null@example.com (smarton)]]></author>
			<pubDate>Tue, 22 Sep 2020 21:26:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142264#p142264</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Переименование папок по маске]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142263#p142263</link>
			<description><![CDATA[<p><strong>smarton</strong>, попробуйте описать задачу подробнее, можете на примере.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 22 Sep 2020 21:02:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142263#p142263</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Переименование папок по маске]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142258#p142258</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Я же писал — словарь. Пробуйте (не проверялось):<br /></p><div class="codebox"><pre><code>Option Explicit

Dim strSourceFolder

Dim objDictionary
Dim objFolder


strSourceFolder = &quot;d:\2\look&quot;

Set objDictionary = WScript.CreateObject(&quot;Scripting.Dictionary&quot;)

With objDictionary
    .Add &quot;111&quot;, &quot;папка1&quot;
    .Add &quot;222&quot;, &quot;папка2&quot;
    .Add &quot;333&quot;, &quot;папка3&quot;
    .Add &quot;444&quot;, &quot;папка4&quot;
End With

With WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)
    If .FolderExists(strSourceFolder) Then
        For Each objFolder In .GetFolder(strSourceFolder).SubFolders
            If objDictionary.Exists(objFolder.Name) Then
                If Not .FolderExists(.BuildPath(strSourceFolder, objDictionary.Item(objFolder.Name))) Then
                    objFolder.Name = objDictionary.Item(objFolder.Name)
                Else
                    WScript.Echo &quot;Folder [&quot; &amp; objDictionary.Item(objFolder.Name) &amp; &quot;] already exists in folder [&quot; &amp; strSourceFolder &amp; &quot;].&quot;
                End If
            End If
        Next
    Else
        WScript.Echo &quot;Source folder [&quot; &amp; strSourceFolder &amp; &quot;] not found.&quot;
        WScript.Quit 1
    End If
End With

objDictionary.RemoveAll
Set objDictionary = Nothing

WScript.Quit 0
</code></pre></div></blockquote></div><p>Здравствуйте.<br />Данный скрипт практически идеально подходит для моих задач, но он не переименовывает подпапки. <br />В моей задаче нужно переименовать подпапки с именем &quot;number&quot; на имя &quot;uNumber&quot;? Подпапки &quot;number&quot; находятся в папках с разным именем.<br />Например,<br />папка 3401 =&gt; подпапка number<br />папка 3402 =&gt; подпапка number<br />папка 3403 =&gt; подпапка number<br />и т.д.<br />Прошу помочь добавить правило, при котором будет происходить переименование в подпапках.</p>]]></description>
			<author><![CDATA[null@example.com (smarton)]]></author>
			<pubDate>Tue, 22 Sep 2020 17:58:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142258#p142258</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Переименование папок по маске]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84661#p84661</link>
			<description><![CDATA[<p>Большое спасибо, это именно то, что нужно. Хорошо что есть такие форумы и люди.</p>]]></description>
			<author><![CDATA[null@example.com (Djdfy)]]></author>
			<pubDate>Thu, 10 Jul 2014 05:17:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84661#p84661</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Переименование папок по маске]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84650#p84650</link>
			<description><![CDATA[<p>Я же писал — словарь. Пробуйте (не проверялось):<br /></p><div class="codebox"><pre><code>Option Explicit

Dim strSourceFolder

Dim objDictionary
Dim objFolder


strSourceFolder = &quot;d:\2\look&quot;

Set objDictionary = WScript.CreateObject(&quot;Scripting.Dictionary&quot;)

With objDictionary
    .Add &quot;111&quot;, &quot;папка1&quot;
    .Add &quot;222&quot;, &quot;папка2&quot;
    .Add &quot;333&quot;, &quot;папка3&quot;
    .Add &quot;444&quot;, &quot;папка4&quot;
End With

With WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)
    If .FolderExists(strSourceFolder) Then
        For Each objFolder In .GetFolder(strSourceFolder).SubFolders
            If objDictionary.Exists(objFolder.Name) Then
                If Not .FolderExists(.BuildPath(strSourceFolder, objDictionary.Item(objFolder.Name))) Then
                    objFolder.Name = objDictionary.Item(objFolder.Name)
                Else
                    WScript.Echo &quot;Folder [&quot; &amp; objDictionary.Item(objFolder.Name) &amp; &quot;] already exists in folder [&quot; &amp; strSourceFolder &amp; &quot;].&quot;
                End If
            End If
        Next
    Else
        WScript.Echo &quot;Source folder [&quot; &amp; strSourceFolder &amp; &quot;] not found.&quot;
        WScript.Quit 1
    End If
End With

objDictionary.RemoveAll
Set objDictionary = Nothing

WScript.Quit 0
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 09 Jul 2014 14:41:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84650#p84650</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Переименование папок по маске]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84648#p84648</link>
			<description><![CDATA[<p>Дело в том, что мне нужно как то задать соответствие старого имени папки и нового,<br />например:<br />папку с именем &quot;111&quot; скрипт должен переименовать в папку с именем &quot;папка1&quot; т.е. хотелось бы чтобы вначале скрипта можно было задать список соответствия имен, что то типа:<br />set 111 = &quot;папка1&quot;<br />set 222 = &quot;папка2&quot;<br />set 333 = &quot;папка3&quot;<br />и т.д. примерно 40 папок.<br />т.е. если скрипт находит папку с именем &quot;111&quot; он ее переименовывает в &quot;папка1&quot; и т.д.<br />Хотелось бы чтобы этот список был где то вначале скрипта, потому что список этих папок нужно будет время от времени менять.</p><div class="quotebox"><cite>alexii пишет:</cite><blockquote><p> опишите принципы, по которым будет строиться соответствие.</p></blockquote></div><p>принципов никаких нет, нужно просто задать жесткое соответствие начального имени папки и конечного.</p>]]></description>
			<author><![CDATA[null@example.com (Djdfy)]]></author>
			<pubDate>Wed, 09 Jul 2014 09:46:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84648#p84648</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Переименование папок по маске]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84647#p84647</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Нужно как то задать соответствие старых и новых имен</p></blockquote></div><p>Перечень соответствия известен? Используйте словарь. Если нет — то опишите принципы, по которым будет строиться соответствие.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 09 Jul 2014 09:33:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84647#p84647</guid>
		</item>
		<item>
			<title><![CDATA[VBS: Переименование папок по маске]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=84643#p84643</link>
			<description><![CDATA[<p>Здравствуйте, помогите пожалуйста решить задачу, есть несколько папок с именами 111, 222, 333, 444 их нужно переименовать, например, в папка1, папка2, папка3, папка4 но каждое новое имя должно соответствовать определенному старому имени, т.е. папка с именем &quot;111&quot; должна всегда переименовываться в &quot;папка1&quot;, &quot;222&quot; в &quot;папка2&quot; и т.д Нужно как то задать соответствие старых и новых имен, а как это сделать ума не приложу. Сразу скажу, что познания в написании скриптов у меня небольшие, пока что смог написать только это:</p><div class="codebox"><pre><code>set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
look = &quot;d:\2\look\&quot;
out = &quot;d:\2\out\&quot;                     
set lookDir = FSO.GetFolder(look)
set outDir = FSO.GetFolder(out)
    for each subFolder in lookDir.subFolders
        NewName = FSO.GetBaseName(subFolder.Name)
        msgbox NewName
    next
set FSO = Nothing</code></pre></div><p>знаю что это ниочем, так что сильно не ругайте.</p>]]></description>
			<author><![CDATA[null@example.com (Djdfy)]]></author>
			<pubDate>Wed, 09 Jul 2014 05:43:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=84643#p84643</guid>
		</item>
	</channel>
</rss>
