Flasher

|
Posted: Sat Jun 22, 2013 17:51 Post subject: |
|
|
Olaf wrote: | всё равно получается много. | Может, и много, но никак не больше, чем в первом варианте. Т.е.
АВ > Авдеев
АЛ > Алексеев по логике лучше, чем
Авдеев-Алексеев > Авдеев
Авдеев-Алексеев > Алексеев Для исходных тестируем vbs (сперва на болванках, писал без тестов):
Code: | '===============================================================================
' Перемещение в активной папке подкаталогов из однобуквенных (в кириллице)
' каталогов в новые подкаталоги (<первое имя в цикле>-<последнее имя в цикле>)
' исходя из разбиения по делящему числу
' Условие: путь запуска - пустой
' Параметр: <делящее число>
'===============================================================================
Count = WScript.Arguments(0)
CD = CreateObject("WScript.Shell").CurrentDirectory & "\"
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each i in Split("а б в г д е ё ж з и к л м н о п р с т у ф х ц ч ш щ э ю я")
FPath = CD & i
If FSO.FolderExists(FPath) Then
S = "" : Set SubF = FSO.GetFolder(FPath).SubFolders
Max = SubF.Count
For Each Fd In Subf
S = S & "|" & FSO.GetFileName(Fd)
Next : Mass = Split(Mid(S,2), "|")
If Max <= Count And Max > 1 Then
FSO.GetFolder(FPath).Name = Mass(0) & "-" & Mass(Max - 1)
Else
For n = 1 To Max
If n < Count - 1 Then
Pref = Mass(0) : NewPath = CD & Pref & "-" & Mass(19) & "\"
ElseIf Fix(n/Count + 1) = n/Count + 1 Then
If n + Count <= Max Then Last = Mass(n + Count - 1) Else Last = Mass(Max - 1)
Pref = Mass(n - 1) : NewPath = CD & Pref & "-" & Last & "\"
End If
If Not FSO.FolderExists(NewPath) Then FSO.CreateFolder(NewPath)
FSO.MoveFolder FPath & "\" & Mass(n - 1), NewPath
Next
End If
End If
Next : Set FSO = Nothing : Set SubF = Nothing : WScript.Quit |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|