Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Как автоматически раскидать файлы? 
Author Message
Flasher



PostPosted: Sat Jun 22, 2013 17:51    Post subject: Reply with quote

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) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group