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  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Lex177



Joined: 06 Dec 2016
Posts: 5

Post (Separately) Posted: Tue Dec 06, 2016 14:07    Post subject: Reply with quote

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



Joined: 29 Apr 2009
Posts: 2164

Post (Separately) Posted: Tue Dec 06, 2016 14:13    Post subject: Reply with quote

Lex177 wrote:
Стандартный инструмент этого не умеет

Попробовать-то можно, вдруг умеет.
Back to top
View user's profile Send private message
Lex177



Joined: 06 Dec 2016
Posts: 5

Post (Separately) Posted: Tue Dec 06, 2016 15:06    Post subject: Reply with quote

ПопробовалWink не умеет.
Не просто так пишутся плагины на подобие этого (из этой ветки).
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2164

Post (Separately) Posted: Tue Dec 06, 2016 15:14    Post subject: Reply with quote

Lex177
А так?
Замена: $1\\$1_
Back to top
View user's profile Send private message
Lex177



Joined: 06 Dec 2016
Posts: 5

Post (Separately) Posted: Tue Dec 06, 2016 15:55    Post subject: Reply with quote

Решил!
Все оказалось не так уж сложно.
В маску для имени файла прописал \[N1-5]\[N]
Всем спасибо за участие!
Back to top
View user's profile Send private message
Staniclaw



Joined: 12 Dec 2010
Posts: 532
Location: Ташкент

Post (Separately) Posted: Tue Dec 06, 2016 16:00    Post subject: Reply with quote

Lex177
Тоже вариант. Так может, стоит убрать дубль?
_________________
Вечному двигателю -- вечные тормоза!..
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1725
Location: Арзамас

Post (Separately) Posted: Tue Dec 06, 2016 18:43    Post subject: Reply with quote

скрипт "Создание дерева папок согласно разделителя в имени файла\папки"
http://forum.wincmd.ru/viewtopic.php?p=56594#56594
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Tue Dec 06, 2016 18:48    Post subject: Reply with quote

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



Joined: 01 Aug 2008
Posts: 8791
Location: Россия, Саратов

Post (Separately) Posted: Tue Dec 06, 2016 19:04    Post subject: Reply with quote

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



Joined: 18 Apr 2015
Posts: 166

Post (Separately) Posted: Mon Feb 12, 2018 11:21    Post subject: Reply with quote

Хотелось бы чтобы скрипт мог перемещать файлы с длинными путями. Они не перемещаются, также как и не перемещаются файлы с длиной пути меньше 259 символов, но с маской будет больше 259 символов. Есть какие-нибудь решения?
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Feb 12, 2018 16:09    Post subject: Reply with quote

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



Joined: 18 Apr 2015
Posts: 166

Post (Separately) Posted: Mon Feb 12, 2018 17:28    Post subject: Reply with quote

Flasher
Устроит и медленная скорость, сделайте, пожалуйста, если не сложно. Как и раньше, лучше чтобы можно было самому вписывать маски в код, в параметры они не влезают. Спасибо.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Feb 12, 2018 21:20    Post subject: Reply with quote

Hjkma
ОК, но не факт, что баги, если возникнут, удастся убрать:
Code:
'=================== VBS ===================
' Переместить файлы из каталога под курсором
' в папки с именами соответствующих им масок
' Параметр: %V
'===========================================
Option Explicit : Dim Filt, Fold, Rgx, REx, FSO, File,_
Strm, List, TName, Mask, IPath, OPath, FPath, IsMask, c
'===================== Маски файлов через "|" =====================
Filt = "12*.*|name 1.txt|name 1*.txt|name *1.*|name2.txt|2.txt|" &_
"name 2.txt|name *2.txt|name 2*.*|name 2.*|name*.txt|*name*|*2*" &_
"|name 3.*|name3.txt|*3*.txt|name 4.txt|name *4*.txt|*5*.txt|*5*"
'==================================================================
Fold = WSH.Arguments(0)
Set Rgx = New RegExp : Rgx.Global = True
Rgx.MultiLine = True : Rgx.IgnoreCase = True
Set REx = New RegExp : REx.Pattern = "([?[\]}{.^$+\-])"
Set FSO = CreateObject("Scripting.FileSystemObject")
With FSO
  If Not .FolderExists(LP(Fold)) Then WSH.Quit
  Set Strm = CreateObject("SAPI.SpFileStream")
  For Each File in .GetFolder("\\?\" & Fold).Files
    List = List & vbLf & .GetFileName(File)
  Next
  TName = .GetBaseName(.GetTempName)
  For Each Mask in Split(Filt, "|")
    Rgx.Pattern = "^" & Replace(REx.Replace(Mask, "\$1"), "*", ".*") & "$"
    If Rgx.Test(List) Then
      OPath = LP(.BuildPath(Fold, Replace(Mask, "*", ChrW(-246))))
      IsMask = InStr(OPath, ChrW(-246))
      For Each File in Rgx.Execute(List)
        IPath = LP(.BuildPath(Fold, File))
        If .FileExists(IPath) Then
          If IsMask = 0 Then
            If Left(IPath, 1) <> "\" Then
              .GetFile(IPath).Name = File & TName
            Else CreateForLong IPath, LP(IPath & TName) End If
            IPath = LP(IPath & TName)
          End If
          If Not .FolderExists(OPath) Then .CreateFolder OPath
          FPath = LP(.BuildPath(OPath, File)) : c = 2
          While FSO.FileExists(FPath)
            FPath = FPath & " (" & c & ")" : c = c + 1
          Wend : FPath = LP(FPath)
          If Left(IPath, 1) = "\" Or Left(FPath, 1) = "\" Then _
          CreateForLong IPath, FPath Else .MoveFile IPath, FPath
        End If
      Next
    End If
  Next
End With : Set FSO = Nothing
Set Rgx = Nothing : Set Strm = Nothing
MsgBox Space(16) & "Выполнено!", 4160,_
" Перемещение файлов в папки-маски      "

Sub CreateForLong(Input, OutPut)
  With Strm
    Dim Size, All : Size = FSO.GetFile(Input).Size
    .Format.Type = 1 : .Open Input, 1 : .Read All, Size : .Close
    .Open OutPut, 3, True : .Write All : All = "" : .Close
  End With : FSO.DeleteFile Input
End Sub

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

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


Last edited by Flasher on Tue Feb 13, 2018 00:11; edited 6 times in total
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 166

Post (Separately) Posted: Mon Feb 12, 2018 22:19    Post subject: Reply with quote

Flasher
Запустил скрипт, но что-то не все файлы отправились, скрипт в каждую папку переместил по одному файлу (1 папка - 1 файл), а остальные файлы остались на месте.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Feb 12, 2018 22:26    Post subject: Reply with quote

Hjkma
Совсем одну вещь прозевал. См. теперь.
_________________
Автору сборки 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  Next
Page 2 of 3

 
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