<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: пакетное переименование и индексирование файлов]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=2354</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=2354&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: пакетное переименование и индексирование файлов».]]></description>
		<lastBuildDate>Tue, 21 Oct 2008 08:42:10 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBScript: пакетное переименование и индексирование файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=14971#p14971</link>
			<description><![CDATA[<p>Для работы с группами файлов существуют также специальные утилиты,<br />например:</p><p><a href="http://www.joejoesoft.com/vcms/108/">Rename Master</a><br /><a href="http://www.dimonius.ru/mysoft.html#renamer">Files Renamer</a><br />(Благодарность за ссылку - <strong>alexii</strong>)</p><p><a href="http://www.den4b.com/projects.php">ReNamer</a><br />(Благодарность за ссылку - <strong>wisgest</strong>)</p>]]></description>
			<author><![CDATA[null@example.com (Poltergeyst)]]></author>
			<pubDate>Tue, 21 Oct 2008 08:42:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=14971#p14971</guid>
		</item>
		<item>
			<title><![CDATA[VBScript: пакетное переименование и индексирование файлов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=14970#p14970</link>
			<description><![CDATA[<p><em>Без гарантий. Используете на свой страх и риск.</em></p><p>Скрипт предназначен для переименования группы однотипных файлов на основе заданного шаблона-маски.<br />Сначала просто запустите скрипт, чтобы файл скрипта скопировался в папку SendTo.<br />Выделите группу файлов в Проводнике,щелкните правой кнопкой мыши по первому файлу последовательности. В контекстном меню выберите &quot;Отправить&quot;-&quot;Переименование_группы_файлов&quot;. Задайте маску и переименуйте группу.</p><p>Сервис SendTo должен быть включен. Dword параметр flags раздела HKCR\CLSID\{7BA4C740-9E81-11CF-99D3-00AA004AE837} должен быть установлен в 1.</p><p>Lang. VBScript<br />Windows Script Host 5.6 <br />OС:WinMe 4.90.3000</p><div class="codebox"><pre><code>&#039;RSeries v1
&#039;----------------------------------------------------------------------------
&#039;Скрипт предназначен для переименования группы однотипных файлов на 
&#039;основе заданного шаблона-маски.
&#039;----------------------------------------------------------------------------
&#039;Сначала просто запустите скрипт,чтобы файл скрипта скопировался
&#039;в папку SendTo.
&#039;
&#039;Выделите группу файлов в Проводнике,щелкните правой кнопкой мыши
&#039;по первому файлу последовательности.В контекстном меню,выберите 
&#039;&quot;Отправить&quot;-&quot;Переименование_группы_файлов&quot; Задайте маску и 
&#039;переименуйте группу.
&#039;
&#039;Сервис SendTo должен быть включен.Dword параметр flags
&#039;раздела HKСR\CLSID\{7BA4C740-9E81-11CF-99D3-00AA004AE837}
&#039;должен быть установлен в 1.
&#039;----------------------------------------------------------------------------
&#039;Lang.:VBScript
&#039;Windows Script Host 5.6 
&#039;OС:WinMe 4.90.3000
&#039;----------------------------------------------------------------------------

    Set SCRRUN=CreateObject(&quot;Scripting.FileSystemObject&quot;)

    If WScript.Arguments.Length=0 Then
        SetTargetScript()
    Else
        RenameSeries(WScript.Arguments)
    End If
    
    WScript.Quit()

&#039;[Копирование в папку SendTo]
&#039;----------------------------------------------------------------------------
Function SetTargetScript()
    Set wShell=CreateObject(&quot;WScript.Shell&quot;)
    SCRRUN.CopyFile _
        WScript.ScriptFullName, _
        wShell.SpecialFolders(&quot;SendTo&quot;) &amp; &quot;\Переименование_группы_файлов.vbs&quot;

    MsgBox     &quot;Файл скрипта скопирован в каталог SendTo&quot;, _
        vbInformation+vbSystemModal, _
        &quot;Первый запуск&quot;
End Function


&#039;[Переименование последовательности файлов]
&#039;----------------------------------------------------------------------------
Function RenameSeries(argArr)
&#039;-----------------------------------------------------------------------------
    iAnsw=MsgBox(    &quot;Переименовать группу из &quot; &amp; argArr.Length &amp; &quot; файлов?&quot;, _
            vbInformation+vbYesNo+vbSystemModal,&quot;Переименование группы&quot;)
    If iAnsw=vbNo Then Exit Function
    &#039;------------------------------------------------------------
    Name    =SCRRUN.GetBaseName(argArr.Item(0))
    Ext    =SCRRUN.GetExtensionName(argArr.Item(0))
    &#039;------------------------------------------------------------

    &#039;[]
    &#039;------------------------------------------------------------
    iAnsw=InputBox(    &quot;Укажите маску переименования:&quot; &amp; vbCRLF &amp; _
            &quot;[Имя ##...#.Расширение]&quot; &amp; vbCRLF &amp; _
            &quot;где ##..# шаблон формата номера&quot;, _
            &quot;Маска переименования&quot;, _
            Name &amp; &quot;#.&quot; &amp; Ext)

    If iAnsw=&quot;&quot; Then Exit Function
    iAnsw=CStr(iAnsw)

    Count    =CInt(Len(iAnsw))-CInt(Len(Replace(iAnsw,&quot;#&quot;,&quot;&quot;)))

    If InStr(1,iAnsw,String(Count,&quot;#&quot;))=0 Or InStr(1,iAnsw,&quot;#&quot;)=0 Then
        MsgBox &quot;Неправильно задана маска.&quot;, _
            vbExclamation+vbSystemModal,&quot;Error&quot;
        Exit Function
    End If


    &#039;[]
    &#039;------------------------------------------------------------
    iIndex=InputBox(&quot;Начальный индекс&quot;, _
            &quot;Начальный индекс&quot;, _
            1)

    If iIndex=&quot;&quot; Or IsNumeric(iIndex)=False Then Exit Function
    iIndex=CInt(iIndex)
    &#039;------------------------------------------------------------

    &#039;------------[Переименование файлов]------------------------
    &#039;------------------------------------------------------------

    &#039;[Генерация случайной маски]
    &#039;------------------------------------------------------------
    Randomize
    d=0
    Do
        d=Rnd()
    Loop Until  d&gt;10^-1
    RandomName=&quot;file&quot; &amp; Left(CStr(d*1000),3)

    &#039;[Присвоение временных имен заданных случайной маской]
    &#039;[с целью исключения ошибки присвоения имени существующего файла]
    &#039;------------------------------------------------------------
    ParentFolder=SCRRUN.GetParentFolderName(argArr.Item(0))

    i=0
    For Each file In argArr
    If SCRRUN.FileExists(file) Then
            SCRRUN.MoveFile _
            file, _
            ParentFolder &amp; &quot;\&quot; &amp; RandomName &amp; i
    i=i+1
    End If
    Next  
    
    WScript.Sleep(300)

    &#039;[Окончательное переименование группы файлов]
    &#039;------------------------------------------------------------
    For j=0 To argArr.Length-1

        &#039;[Префикс из нулей.Упраздняется в случае превышения]
        &#039;[длиной индекса количества символов маски]

        If Count-Len(CStr(j+iIndex))&lt;=0 Then 
            pref=&quot;&quot;
        Else
            pref=String(Count-Len(CStr(j+iIndex)),&quot;0&quot;)
        End If

        On Error Resume Next

        &#039;[Указание начального и конечного файла]

        RandomLocation    =ParentFolder &amp; &quot;\&quot; &amp; RandomName &amp; j
        NewLocation    =ParentFolder &amp; &quot;\&quot; &amp; Replace(iAnsw,String(Count,&quot;#&quot;),pref &amp; j+iIndex)
        
        SCRRUN.MoveFile _
            RandomLocation, _
            NewLocation
        If Err.Number&lt;&gt;0 Then     MsgBox _
                    Err.Description, _
                    vbExclamation+vbSystemModal,&quot;Error&quot;
        Err.Clear
    Next 

    WScript.Sleep(300)

    &#039;------------------------------------------------------------
    MsgBox _
        &quot;Готово.&quot;, _
        vbInformation+vbSystemModal,&quot;Переименование группы&quot;
    &#039;------------------------------------------------------------
End Function
&#039;----------------------------------------------------------------------------
&#039;Последний раз исправлено 20.10.2008</code></pre></div><p>Скрипт предназначен для индексирования группы однотипных файлов и аналогичен предыдущему скрипту.<br />Сначала просто запустите скрипт, чтобы файл скрипта скопировался в папку SendTo.<br />Выделите группу файлов в Проводнике, щелкните правой кнопкой мыши по первому файлу последовательности. В контекстном меню выберите&nbsp; &quot;Отправить&quot;-&quot;Индексирование_группы_файлов&quot;. Задайте маску и индексируйте группу.</p><p>Сервис SendTo должен быть включен. Dword параметр flags раздела HKСR\CLSID\{7BA4C740-9E81-11CF-99D3-00AA004AE837} должен быть установлен в 1.</p><p>Имя индексированного файла берется на основе имени старого файла - от крайнего правого символа &quot;_&quot; (если таковой существует) и до конца, после чего приписывается индекс.</p><p>Lang.:VBScript<br />Windows Script Host 5.6 <br />OС:WinMe 4.90.3000</p><div class="codebox"><pre><code>&#039;ISeries v1
&#039;----------------------------------------------------------------------------
&#039;Скрипт предназначен для индексирования группы однотипных файлов.
&#039;----------------------------------------------------------------------------
&#039;Сначала просто запустите скрипт,чтобы файл скрипта скопировался
&#039;в папку SendTo.
&#039;
&#039;Выделите группу файлов в Проводнике,щелкните правой кнопкой мыши
&#039;по первому файлу последовательности.В контекстном меню,выберите 
&#039;&quot;Отправить&quot;-&quot;Индексирование_группы_файлов&quot; Задайте маску и 
&#039;индексируйте группу.
&#039;
&#039;Сервис SendTo должен быть включен.Dword параметр flags
&#039;раздела HKСR\CLSID\{7BA4C740-9E81-11CF-99D3-00AA004AE837}
&#039;должен быть установлен в 1.
&#039;
&#039;Имя индексированного файла берется на основе имени старого файла - 
&#039;от крайнего правого символа &quot;_&quot;(если таковой существует) и до конца,
&#039;после чего приписывается индекс.
&#039;----------------------------------------------------------------------------
&#039;Lang.:VBScript
&#039;Windows Script Host 5.6 
&#039;OС:WinMe 4.90.3000
&#039;----------------------------------------------------------------------------

    Set SCRRUN=CreateObject(&quot;Scripting.FileSystemObject&quot;)

    If WScript.Arguments.Length=0 Then
        SetTargetScript()
    Else
        RenameSeries(WScript.Arguments)
    End If
    
    WScript.Quit()

&#039;[Копирование в папку SendTo]
&#039;----------------------------------------------------------------------------
Function SetTargetScript()
    Set wShell=CreateObject(&quot;WScript.Shell&quot;)
    SCRRUN.CopyFile _
        WScript.ScriptFullName, _
        wShell.SpecialFolders(&quot;SendTo&quot;) &amp; &quot;\Индексирование_группы_файлов.vbs&quot;

    MsgBox     &quot;Файл скрипта скопирован в каталог SendTo&quot;, _
        vbInformation+vbSystemModal, _
        &quot;Первый запуск&quot;
End Function


&#039;[Индексирование последовательности файлов на основе собственного имени]
&#039;----------------------------------------------------------------------------
Function RenameSeries(argArr)
&#039;-----------------------------------------------------------------------------
    iAnsw=MsgBox(    &quot;Индексировать группу из &quot; &amp; argArr.Length &amp; &quot; файлов?&quot;, _
            vbInformation+vbYesNo+vbSystemModal,&quot;Индексирование группы&quot;)
    If iAnsw=vbNo Then Exit Function

    &#039;[]
    &#039;------------------------------------------------------------
    iAnsw=InputBox(    &quot;Укажите маску индексирования:&quot;, _
                &quot;Маска индексирования&quot;, _
                &quot;##&quot;)
    If iAnsw=&quot;&quot; Then Exit Function
    If Len(Replace(iAnsw,&quot;#&quot;,&quot;&quot;))&gt;0 Then
        MsgBox &quot;Допустимы только символы #&quot;, _
            vbExclamation+vbSystemModal,&quot;Error&quot;
        Exit Function
    End If
    
    &#039;[]
    &#039;------------------------------------------------------------
    iIndex=InputBox(&quot;Начальный индекс&quot;, _
            &quot;Начальный индекс&quot;, _
            1)
    If iIndex=&quot;&quot; Or IsNumeric(iIndex)=False Then Exit Function

    iIndex=CInt(iIndex)
    &#039;------------------------------------------------------------

    iAnsw    =CStr(iAnsw)
    Count    =CInt(Len(iAnsw))

    ParentFolder=SCRRUN.GetParentFolderName(argArr.Item(0))
    

    &#039;[]
    &#039;------------------------------------------------------------
    Set RegExp=CreateObject(&quot;VBScript.RegExp&quot;)
    RegExp.Global        =True
    RegExp.IgnoreCase    =True

    &#039;////////////////////////////////////////////////////////////
    &#039;[Можно Изменить регулярное выражение для удаляемой части строки имени файла]
    &#039;////////////////////////////////////////////////////////////
    RegExp.Pattern        =&quot;.+_+&quot;

    &#039;------------------------------------------------------------
    

    &#039;------------[Переименование файлов]------------------------
    &#039;------------------------------------------------------------

    &#039;[Генерация случайного имени]
    &#039;------------------------------------------------------------
    Randomize
    d=0
    Do
        d=Rnd()
    Loop Until  d&gt;10^-1
    RandomName=&quot;file&quot; &amp; Left(CStr(d*1000),3)

    &#039;[Присвоение временных имен заданных случайным именем]
    &#039;[с целью исключения ошибки присвоения имени существующего файла]
    &#039;------------------------------------------------------------
    ParentFolder=SCRRUN.GetParentFolderName(argArr.Item(0))

    i=0
    For Each file In argArr
    If SCRRUN.FileExists(file) Then
            SCRRUN.MoveFile _
            file, _
            ParentFolder &amp; &quot;\&quot; &amp; RandomName &amp; i
    i=i+1
    End If
    Next  

    WScript.Sleep(300)

    &#039;----------[Индексирование группы файлов]--------------------
    &#039;------------------------------------------------------------
    For j=0 To argArr.Length-1

        If Count-Len(CStr(j+iIndex))&lt;=0 Then 
            pref=&quot;&quot;
        Else
            pref=String(Count-Len(CStr(j+iIndex)),&quot;0&quot;)
        End If

    On Error Resume Next

    Name    =SCRRUN.GetBaseName(argArr.Item(j))
    Ext    =SCRRUN.GetExtensionName(argArr.Item(j))
    
    SCRRUN.MoveFile _
        ParentFolder &amp; &quot;\&quot; &amp; RandomName &amp; j, _
        ParentFolder &amp; &quot;\&quot; &amp; pref &amp; j+iIndex &amp; &quot;_&quot; &amp; RegExp.Replace(Name,&quot;&quot;) &amp; &quot;.&quot; &amp; Ext
    
    If Err.Number&lt;&gt;0 Then     MsgBox _
                Err.Description, _
                vbExclamation+vbSystemModal,&quot;Error&quot;
    Err.Clear
    Next 

    WScript.Sleep(300)

    &#039;------------------------------------------------------------
    MsgBox _
        &quot;Готово.&quot;, _
        vbInformation+vbSystemModal,&quot;Индексирование группы&quot;
    &#039;------------------------------------------------------------
End Function
&#039;----------------------------------------------------------------------------
&#039;Последний раз исправлено 20.10.2008</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Poltergeyst)]]></author>
			<pubDate>Tue, 21 Oct 2008 08:40:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=14970#p14970</guid>
		</item>
	</channel>
</rss>
