Перемещение нужного количества файлов по папкам
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next  :| |:
Total Commander -> Автоматизация Total Commander

#91:  Author: FlasherLocation: Москва PostPosted: Wed Oct 11, 2017 13:18
    —
Hjkma
В этом и проблема. Я спрашивал о пользе (удобстве). Удобней как раз не менять каждый раз.

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

#92:  Author: Hjkma PostPosted: Wed Oct 11, 2017 13:28
    —
Flasher
Наверное я не совсем точно описал как я просматриваю изображения. Сортировка по убыванию нужна только чтобы заставить скрипт распределять файлы как мне нужно. И потом меняю сортировку. И захожу в первую подпапку с этой сортировкой. Я естественно начинаю с старых изображений в этой папке (по названию) и заканчиваю самыми свежими как дохожу до конца папки. Но количество файлов я выставляю на 500, это эквивалентно тому сколько всего изображений заливается на сервер за несколько дней, поэтому сами изображения в первых папках все еще остаются свежими, поэтому в этом ничего страшного.

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

Не понял, почему должен именно в обратную сторону?

#93:  Author: FlasherLocation: Москва PostPosted: Wed Oct 11, 2017 13:50
    —
Hjkma
"не совсем точно" — это ещё мягко сказано. Сперва с новых, теперь со старых. Ладно...

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

Last edited by Flasher on Wed Oct 11, 2017 14:15; edited 1 time in total

#94:  Author: Hjkma PostPosted: Wed Oct 11, 2017 14:06
    —
Quote:
Т. е. при повторных запусках на ранее обработанных папках для более свежих файлов счётчик у подпапок должен пойти в обратном направлении. В этом основная нестыковка.

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

А вообще-то когда в папке будут новые свежие файлы и я захочу их перемещать по папкам, то наверное к этому моменту сами предыдущие подпапки с изображениями будут уже удалены, т.к. после просмотра я удаляю папку с изображениями, чтобы они не загромождали место. Так что с этим можно вообще просто не заморачиваться, думаю не будет конфликтов каких-то. Или просто подожду когда все подпапки будут уже удалены и тогда буду скачивать новые файлы и их буду перемещать.

#95:  Author: FlasherLocation: Москва PostPosted: Wed Oct 11, 2017 15:27
    —
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


Last edited by Flasher on Thu Oct 12, 2017 01:30; edited 4 times in total

#96:  Author: Hjkma PostPosted: Wed Oct 11, 2017 15:57
    —
Flasher
Запустил скрипт и оказалось что-то не так с сортировкой в работе скрипта. Посмотрите на скриншот на пути перемещенных файлов и как Тотал сортирует имена этих файлов. Параметры делал точно такие как в примере.

#97:  Author: FlasherLocation: Москва PostPosted: Wed Oct 11, 2017 16:04
    —
Hjkma
Надо отсортировать сперва по пути, а потом через Ctrl/Shift+ЛКМ по именному табулятору, а то так сложно разобраться.

P.S.: И настоятельно прошу присылась прямые ссылки без всяких банеров и рекламы. Для этого есть нормальные хостинги: 1, 2 и т. п.

#98:  Author: Hjkma PostPosted: Wed Oct 11, 2017 16:33
    —
Quote:
Надо отсортировать сперва по пути, а потом через Ctrl/Shift+ЛКМ по именному табулятору

Сделал, но не понял как сделать отсюда скриншот, который будет понятен (возможно из-за набора колонок или из-за панели результатов поиска). Думаю лучше будет просто прислать файл с списком путей, отсортировано уже по именам файлов. Вот:
https://mega.nz/#!e5cG2CYS!vFerCY_n0khatIrorgX_XymNccFMhGrZnySKi7xCPmo
Также могу прислать архив с этой папкой с подпапками, если нужно.

#99:  Author: FlasherLocation: Москва PostPosted: Wed Oct 11, 2017 16:46
    —
Hjkma
Откуда "отсюда"?
Ну, слать списке через облако — это уже совсем перебор. На форуме есть спойлер, если что. Архив не нужен. Сам список, конечно, уместнее снимка.

#100:  Author: Hjkma PostPosted: Wed Oct 11, 2017 16:53
    —
Quote:
Откуда "отсюда"?

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

Как включается? [spoiler]текст[/spoiler] не работает и такую кнопку не вижу в меню отправки сообщения.

#101:  Author: FlasherLocation: Москва PostPosted: Wed Oct 11, 2017 17:05
    —
Hjkma
При проблемах см. хелп. Да даже сортировки по пути и то хватило бы.
Спойлеры я не раз показывал.

#102:  Author: Hjkma PostPosted: Wed Oct 11, 2017 17:09
    —
Flasher
Вот
 пути