Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


vbs
Код: Выделить весь код
MyDir = "Z:\Soft_In"
Ext = "txt"

MyMask = "^.*\." + Ext + "$"

Set Reg = CreateObject("VBScript.RegExp")
Reg.IgnoreCase = True
Reg.Pattern = MyMask

With CreateObject("Scripting.FileSystemObject")
    Set Files = .GetFolder(MyDir).Files

    For Each File In Files
        FilePath = File.Path
        If Reg.Test(FilePath) Then
            .MoveFile FilePath, FilePath + ".~~~tmp~~~"
        End If
    Next

    Set Files = .GetFolder(MyDir).Files
    Reg.Pattern = "^.*\.~~~tmp~~~$"

    N = 0
    For Each File In Files
        FilePath = File.Path
        If Reg.Test(FilePath) Then
            N = N + 1
            .MoveFile FilePath, File.ParentFolder + "\" + CStr(N) + "." + Ext
        End If
    Next
End With

MsgBox "Done"
В ~2раза быстрее моего CMD. Переименовываю все файлы с указанным расширением. Если бы была гарантия, что все исходные файлы если и имеют цифровые имена, но более числа файлов, то переименование можно было бы сделать еще в 2 раза быстрее. В противном случае вижу только такое решение, реализованное в моих CMD и VBS: переименовывать дважды.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 25-10-2020 в 14:26.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:11, 25-10-2020 | #8