Batya

|
Posted: Tue Feb 09, 2010 01:21 Post subject: |
|
|
CaptainFlint wrote: | Если очень хочется, можно поковыряться с плагином script_wdx |
Не очень удачный вариант, т. к. счетчик в новых именах нужно наращивать и где-то хранить промежуточные значения.
Сделал vbs-скрипт. Хорошенько погонять его времени нет. Проверь, правильно ли работает.
Code: | '===================================================
' Переименование файлов и папок из файла-списка
' по заданному счетчику
'
' Параметры:
' {файл-список}
'
' Пример параметров при вызове из TC:
' %L
'===================================================
Option Explicit
'======== Изменяемые параметры =====================
' Символы счетчика
Const Counter = "0123456789abcdefghijklmnopqrstuvwxyz"
' Лидирующий символ
Const FirstSymbol = " "
'Const FirstSymbol = "0"
'===================================================
Dim FSO, WSH, Str, List, N, i, F, Rank, K
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
Str = FSO.OpenTextFile(GetPath(WScript.Arguments(0))).ReadAll
List = Split(Str, vbNewLine)
N = UBound(List)
If List(N) = "" Then N = N - 1
Rank = Len(Counter)
K = -Int(-Log(N+1)/Log(Rank))
For i = 1 To N + 1
F = GetPath(List(i - 1))
If FSO.FolderExists(F) Then
FSO.GetFolder(F).Name = Trim(Right(String(K, FirstSymbol) & GetWord(i), K))
End If
If FSO.FileExists(F) Then
FSO.GetFile(F).Name = Trim(Right(String(K, FirstSymbol) & GetWord(i), K)) & "." & FSO.GetExtensionName(F)
End If
Next
Set WSH = Nothing
Set FSO = Nothing
WScript.Quit 0
Function GetPath(pPath)
GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function
Function GetWord(pNumber)
Dim ln, lm, lRes
ln = Int(pNumber/Rank)
lm = pNumber Mod Rank
lRes = Mid(Counter, lm + 1, 1)
If ln > 0 Then lRes = GetWord(ln) + lRes
GetWord = lRes
End Function |
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|