Как переместить файлы автоматом, каждый в свой каталог?

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

alex-navigator
Так это почти то, что я привёл выше, только второй разделитель точка.
Теперь надо указать список вероятных разделителей - первых и вторых, соответственно.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
alex-navigator
Сообщения: 8
Зарегистрирован: Сб дек 14, 2013 21:23

Сообщение alex-navigator »

Flasher
Да, Вы правы. Сперва я Вас просто не понял.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

alex-navigator
Так а разделители будут?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
alex-navigator
Сообщения: 8
Зарегистрирован: Сб дек 14, 2013 21:23

Сообщение alex-navigator »

Flasher
Разделители будут такие: "_число_" и " _число."
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Освободился..

Код: Выделить всё

  Filt1 = InStr(Name, "_")
  If Filt1 Then
    RName = Mid(Name, Filt1 + 1)
    Filt2 = InStr(RName, "_") : Filt3 = InStr(RName, ".")
    If Filt1 Or Filt2 And Abs(Filt2-Filt1) > 1 Then
      If Filt2 And Filt3 And Filt2 < Filt3 Then Fold = Target & Left(RName, Filt2-1)
      If Filt2 And Filt3 And Filt3 < Filt2 Then Fold = Target & Left(RName, Filt3-1)
      If Filt2 And Not Filt3 Then Fold = Target & Left(RName, Filt2-1)
      If Filt3 And Not Filt2 Then Fold = Target & Left(RName, Filt3-1)
      If FSO.FolderExists(Fold) Then
        If Left(File, 1) = Left(Target, 1) Then
          FSO.MoveFile   File, Fold & "\"
        Else
          FSO.CopyFile   File, Fold & "\", True
          FSO.DeleteFile File
        End If
      End If
    End If
  End If
вместо

Код: Выделить всё

  For i = Len(Name) To 1 Step -1
    Fold = Target & Left(Name, i)
    If FSO.FolderExists(Fold) Then
      FSO.CopyFile   File, Fold & "\", True
      FSO.DeleteFile File
      Exit For
    End If
  Next 
Последний раз редактировалось Flasher Пн дек 16, 2013 00:38, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
alex-navigator
Сообщения: 8
Зарегистрирован: Сб дек 14, 2013 21:23

Сообщение alex-navigator »

Flasher
Спасибо за труды! Вылезла ошибочка, что Переменная не определена: Filt1
Код 800A01F4. Если исправления займут много времени, то оно этого не стоит, Вы мне и так много уже помогли.
Flasher, можно ли сделать, чтобы файл не копировался, затем удалялся, а просто перемещался???
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

alex-navigator писал(а):Вылезла ошибочка
10 и 11 строки закомментировать. Они только для отладки.
alex-navigator писал(а):Flasher, можно ли сделать, чтобы файл не копировался, затем удалялся, а просто перемещался?
Это сделано для того, чтобы не было проблем с перемещением с других томов. Сделал два варианта.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
alex-navigator
Сообщения: 8
Зарегистрирован: Сб дек 14, 2013 21:23

Сообщение alex-navigator »

Flasher
Спасибо Вам большое!
Ответить