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 

Перемещение нужного количества файлов по папкам
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



Joined: 06 Nov 2009
Posts: 12545
Location: Москва

Post (Separately) Posted: Wed Oct 11, 2017 13:18    Post subject: Reply with quote

Hjkma
В этом и проблема. Я спрашивал о пользе (удобстве). Удобней как раз не менять каждый раз.

Плюс к этому, при последующих копированиях/перемещениях счётчик же не должен пойти со знаком минус (в обратную от 1-цы сторону).
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 166

Post (Separately) Posted: Wed Oct 11, 2017 13:28    Post subject: Reply with quote

Flasher
Наверное я не совсем точно описал как я просматриваю изображения. Сортировка по убыванию нужна только чтобы заставить скрипт распределять файлы как мне нужно. И потом меняю сортировку. И захожу в первую подпапку с этой сортировкой. Я естественно начинаю с старых изображений в этой папке (по названию) и заканчиваю самыми свежими как дохожу до конца папки. Но количество файлов я выставляю на 500, это эквивалентно тому сколько всего изображений заливается на сервер за несколько дней, поэтому сами изображения в первых папках все еще остаются свежими, поэтому в этом ничего страшного.

Quote:
Плюс к этому, при последующих копированиях/перемещениях счётчик же не должен пойти со знаком минус (в обратную от 1-цы сторону).

Не понял, почему должен именно в обратную сторону?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12545
Location: Москва

Post (Separately) Posted: Wed Oct 11, 2017 13:50    Post subject: Reply with quote

Hjkma
"не совсем точно" — это ещё мягко сказано. Сперва с новых, теперь со старых. Ладно...

Hjkma wrote:
почему должен именно в обратную сторону?
Так это сейчас было оговорено. Самые свежие (т. е. с последними номерами) файлы идут в папку с первыми. Т. е. при повторных запусках на ранее обработанных папках для более свежих файлов счётчик у подпапок должен пойти в обратном направлении. В этом основная нестыковка.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Wed Oct 11, 2017 14:15; edited 1 time in total
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 166

Post (Separately) Posted: Wed Oct 11, 2017 14:06    Post subject: Reply with quote

Quote:
Т. е. при повторных запусках на ранее обработанных папках для более свежих файлов счётчик у подпапок должен пойти в обратном направлении. В этом основная нестыковка.

Понятно. Возможно это обойти как-нибудь, например, добавить еще другой номер счетчика или добавить время и дату запуска скрипта или что-то в этом роде?

А вообще-то когда в папке будут новые свежие файлы и я захочу их перемещать по папкам, то наверное к этому моменту сами предыдущие подпапки с изображениями будут уже удалены, т.к. после просмотра я удаляю папку с изображениями, чтобы они не загромождали место. Так что с этим можно вообще просто не заморачиваться, думаю не будет конфликтов каких-то. Или просто подожду когда все подпапки будут уже удалены и тогда буду скачивать новые файлы и их буду перемещать.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12545
Location: Москва

Post (Separately) Posted: Wed Oct 11, 2017 15:27    Post subject: Reply with quote

Hjkma wrote:
Так что с этим можно вообще просто не заморачиваться
Ну, ОК.
Code:
'================================= VBS ================================
' Копирование/перемещение заданного числа файлов из выбранных каталогов
' в подкаталоги с именами <имя родительского каталога> - <счётчик>

' Параметры: %WL <делящее число> <copy/move>
' Пример:    %WL 50 move
'======================================================================
Option Explicit
Const Rank = 0  ' Минимальное число цифр в создаваемых подкаталогах
'======================================================================
Dim Sort, FSO, A, Stream, Count, List, Fd,_
Files, Name, n, i, FP, x, F, Path, FN, All
Set Sort = CreateObject("System.Collections.Sortedlist")
Set FSO  = CreateObject("Scripting.FileSystemObject")
Set A = WSH.Arguments : If A.Count = 0 Then WSH.Quit
Set Stream = CreateObject("SAPI.SpFileStream")
Count = CSng(A(1))
Set List = FSO.OpenTextFile(A(0),,,-1)
Do : Fd = LPath(List.ReadLine)
  If FSO.FolderExists(Fd) Then
    Set Files = FSO.GetFolder("\\?\" & Replace(Fd, "\\?\", "")).Files
    If Files.Count Then
      n = 1 : i = Count
      For Each F in Files
        FP = F.Path : If Left(FP, 1) = "\" And _
        Len(Mid(FP, 5)) < 260 Then FP = Mid(FP, 5)
        Sort.Add F.Name, FP
      Next
      For x = Sort.Count - 1 To 0 Step -1
        F = LPath(Sort.GetByIndex(x))
        If i >= Count Then
          Name = FSO.GetFileName(Fd)
          If Len(n) < Rank Then
            Path = FSO.BuildPath(Fd, Name & " - " & Right(String(Rank, "0") & n, Rank))
          Else Path = FSO.BuildPath(Fd, Name & " - " & n) End If
          Path = LPath(Path & "\") : i = 1 : n = n + 1
          If Not FSO.FolderExists(Path) Then FSO.CreateFolder Path
        Else i = i + 1 End If : FN = LPath(Path & Sort.GetKey(x))
        If Not FSO.FileExists(FN) Then
          If Left(FN, 1) = "\" Then
             With Stream
               .Format.Type = 1 : .Open F, 1 : .Read  All, FSO.GetFile(F).Size
               .Close : .Open FN, 3, True : .Write All : All = "" : .Close
             End With : If LCase(A(2)) = "move" Then FSO.DeleteFile F
          Else Execute "FSO." & A(2) & "File F, Path" End If
        End If
      Next : Sort.Clear
    End If
  End If
Loop Until List.AtEndOfStream : List.Close

Function LPath(Obj)
  LPath = Obj : If Len(Obj) > 259 And Left(Obj, 1) <> "\" Then LPath = "\\?\" & Obj
End Function

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Thu Oct 12, 2017 01:30; edited 4 times in total
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 166

Post (Separately) Posted: Wed Oct 11, 2017 15:57    Post subject: Reply with quote

Flasher
Запустил скрипт и оказалось что-то не так с сортировкой в работе скрипта. Посмотрите на скриншот на пути перемещенных файлов и как Тотал сортирует имена этих файлов. Параметры делал точно такие как в примере.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12545
Location: Москва

Post (Separately) Posted: Wed Oct 11, 2017 16:04    Post subject: Reply with quote

Hjkma
Надо отсортировать сперва по пути, а потом через Ctrl/Shift+ЛКМ по именному табулятору, а то так сложно разобраться.

P.S.: И настоятельно прошу присылась прямые ссылки без всяких банеров и рекламы. Для этого есть нормальные хостинги: 1, 2 и т. п.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 166

Post (Separately) Posted: Wed Oct 11, 2017 16:33    Post subject: Reply with quote

Quote:
Надо отсортировать сперва по пути, а потом через Ctrl/Shift+ЛКМ по именному табулятору

Сделал, но не понял как сделать отсюда скриншот, который будет понятен (возможно из-за набора колонок или из-за панели результатов поиска). Думаю лучше будет просто прислать файл с списком путей, отсортировано уже по именам файлов. Вот:
https://mega.nz/#!e5cG2CYS!vFerCY_n0khatIrorgX_XymNccFMhGrZnySKi7xCPmo
Также могу прислать архив с этой папкой с подпапками, если нужно.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12545
Location: Москва

Post (Separately) Posted: Wed Oct 11, 2017 16:46    Post subject: Reply with quote

Hjkma
Откуда "отсюда"?
Ну, слать списке через облако — это уже совсем перебор. На форуме есть спойлер, если что. Архив не нужен. Сам список, конечно, уместнее снимка.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 166

Post (Separately) Posted: Wed Oct 11, 2017 16:53    Post subject: Reply with quote

Quote:
Откуда "отсюда"?

Из панели результатов поиска, применил эти манипуляции и сделалось не наглядно совсем, может что-то не так сделал.
Quote:
На форуме есть спойлер, если что.

Как включается? [spoiler]текст[/spoiler] не работает и такую кнопку не вижу в меню отправки сообщения.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12545
Location: Москва

Post (Separately) Posted: Wed Oct 11, 2017 17:05    Post subject: Reply with quote

Hjkma
При проблемах см. хелп. Да даже сортировки по пути и то хватило бы.
Спойлеры я не раз показывал.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 166

Post (Separately) Posted: Wed Oct 11, 2017 17:09    Post subject: Reply with quote

Flasher
Вот
 пути
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12545
Location: Москва

Post (Separately) Posted: Wed Oct 11, 2017 17:20    Post subject: Reply with quote

Hjkma
Опять пути не отсортированы. Пришлось через редактор...
В общем. Я-то изначально делал под исходные данные, подразумевая, что в каждой папке файлы с одинаковыми именами и счётчиком. В итоге это давало верный результат для файлов типа file.exe, file 2.txt, file 11.txt.
Правильно я понимаю, что с учётом наличия 14-значных чисел спереди символьной сортировки без учёта завершающей нумерации будет достаточно?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 166

Post (Separately) Posted: Wed Oct 11, 2017 17:28    Post subject: Reply with quote

Flasher
Вряд ли в каждой папке есть файлы с одинаковыми именами, думаю их скорее всего не будет. Но вообще даже если есть, то в чем проблема, ведь они должны перемещаться в подпапки каждой папки, их не нужно сливать в одну кучу и не будет конфликта имен.
Quote:
без учёта завершающей нумерации будет достаточно?

Не понял о чем тут речь. Это о номерах счетчика в подпапках? Если да, не понимаю зачем их учитывать, сортировать нужно имена файлов. Или если нет, проясните плиз детально о чем речь.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12545
Location: Москва

Post (Separately) Posted: Wed Oct 11, 2017 17:37    Post subject: Reply with quote

Hjkma
При символьной сортировке будет 33, 32, 31, 3, 22, 21, 2, 11, 1, а не 33, 32, 31, 22, 21, 11, 3, 2, 1. Т. е. нет числового учёта на любых позициях в имени, только цифровой.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8  Next
Page 7 of 8

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group