Автоматическое создание папок

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

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

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

Сообщение Flasher »

job.forme писал(а):а вот такой вариант
уже есть. Поиском пользоваться умеем?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
job.forme
Сообщения: 17
Зарегистрирован: Пт авг 08, 2014 23:54

Сообщение job.forme »

Flasher, ага спасибо, я первый день на форуме, ооооочень большой)) сегодня утром нашел указанную Вами тему. Попробовал - и вот вопрос - как сделать, что бы создавалось в ТЕКУЩЕЙ (активной) панели? И вариант с последующим открытием тоже интересен, как я понял остался недосказанным...
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

job.forme
Всё там досказано. Параметры все указаны. Если есть по ним вопросы, то в указанной теме и надо спрашивать.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
UFO_hA
Сообщения: 2
Зарегистрирован: Сб фев 28, 2015 20:04

Доброе время суток.

Сообщение UFO_hA »

Очень нуждаюсь в помощи. Срочно нужен скрипт. Задача: Есть папка с большим количеством фото. Необходимо их отсортировать следующим способом. Выделяются нужные картинки, и при нажатии на кнопку создаётся новая папка(в той же папке где лежат фото) и в эту папку перемещаются выделенные ранее фото. Требований к названием папок нет(ну разве только что бы названия не повторялись.).
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

UFO_hA
Не говоря уже про поиск по форуму, хотя бы текущую тему от конца предыдущей страницы и дальше (то есть последний запрос и его обсуждение) прочитать можно было?
Даже самая богатая фантазия
Не представит себе наши безобразия.
UFO_hA
Сообщения: 2
Зарегистрирован: Сб фев 28, 2015 20:04

Сообщение UFO_hA »

Уважаемый Avada. Я вас очень прошу, ткните пальцем. Всё что я здесь пока прочитал не подходит. А времени свободного просто нет. Буду очень благодарен.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

UFO_hA писал(а):Всё что я здесь пока прочитал не подходит. А времени свободного просто нет.
Прочесть последний пост на предыщущей странице, а потом последующие уже на этой - это проблема, на это нужно много времени?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Badboy
Сообщения: 2
Зарегистрирован: Пн мар 20, 2017 02:08

По части имени файла

Сообщение Badboy »

Подскажите пожалуйста, как изменить этот скрипт, чтобы он создавал папки по ЧАСТИ имени файла, а не по всему имени файла.
Пример:
Есть файл: 2016.01.01.(14-01-16).jpg
Нужно создать папку (2016.01.01) по первым 10 символам, и поместить туда все файлы, начинающиеся на эти 10 символов
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Badboy
Можно обойтись без скрипта, с помощью группового переименования.
Выделить файлы -> (Ctrl+M) -> Маска для: имени файла [N1-10]\[N] -> Выполнить.
Аватара пользователя
Zmy
Сообщения: 78
Зарегистрирован: Пн апр 06, 2015 12:52

Сообщение Zmy »

Попробуйте так.

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

' Создание папки по имени файла и перемещение в нее файла
' Может быть выделено несколько файлов
' Для создания папок в текущей панели
'   в параметрах вызова из TC должно быть прописано:
' %L
' Для создания папок в противоположной панели
'   в параметрах вызова из TC должно быть прописано:
' %L "%T"
' основан на коде Batya
'=====================================================================
If WScript.Arguments.Count = 0 Then
MsgBox "Нужны такие параметры:" + vbNewLine + vbNewLine + "%L" + vbNewLine + vbNewLine + "Или такие параметры:" + vbNewLine + vbNewLine + "%L ""%T""", vbOKOnly + vbError, "No Parameteres"
Wscript.Quit
End If
Dim TempFile, FSO, SelFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TempFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
Name = InputBox("Введите количество символов", "Input", 10)
If Name = "" Then
Wscript.Quit
End If
Dim FileName, FilePath, DashInName, NewFilePath
Do While Not TempFile.AtEndOfStream
Set SelFile = FSO.GetFile(TempFile.ReadLine)
FileName = FSO.GetBaseName(SelFile)
FilePath = SelFile.ParentFolder
LName = (Left(FileName, Name))
If WScript.Arguments.Count > 1 Then
NewFilePath = WScript.Arguments(1) & LName
Else
NewFilePath = FilePath & "\" & LName
End If
If Not FSO.FolderExists(NewFilePath) Then
FSO.CreateFolder(NewFilePath)
End If
If Not FSO.FileExists(NewFilePath & "\" & FileName & "." & FSO.GetExtensionName(SelFile)) Then
FSO.MoveFile SelFile, NewFilePath & "\"
Else
MsgBox "Files Already Exist", vbOKOnly + vbError, "Error"
End If
Loop
Set TempFile = Nothing : Set FSO = Nothing : Set SelFile = Nothing : Wscript.Quit
Последний раз редактировалось Zmy Вс мар 26, 2017 07:15, всего редактировалось 2 раза.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Badboy
Без оверквотинга никак? Снизу памятки в первом пункте что написано?

Сам могу такую вещь предложить (в примерах 2 варианта решения):

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

'================================== VBS ================================
' Перемещение выбранных файлов в создаваемые при необходимости каталоги
' с тем же базовым именем или его частью, заданной регулярным выражением

' Параметры: %WL "<путь получателя>" <регулярное выражение>

' Условие: искомая часть в регулярном выражении записывается в скобках.
' Если второй параметр не задан или пуст, то
' получателем будет родительский каталог файла.

' Примеры:   %WL "%T"  |  %WL "" ^(\d+\.\d+\.\d+)  |  %WL "%T" (.{10})
'=======================================================================

Set A = WSH.Arguments : C = A.Count : If C = 0 Then WSH.Quit
Set FSO  = CreateObject("Scripting.FileSystemObject")
Set ShAp = CreateObject("Shell.Application")
Set List = FSO.OpenTextFile(A(0),,,-1)
If C = 3 Then _
Set Reg  = New RegExp : Reg.Global = True:_
Reg.IgnoreCase = True : Reg.Pattern = A(2)
Do : F = Trim(List.ReadLine)
  If FSO.FileExists(F) Then
    BN = FSO.GetBaseName(F)
    If IsObject(Reg) Then If Reg.Test(BN) Then _
    BN = Reg.Execute(BN)(0).Submatches(0) Else BN = ""
    If Len(BN) Then
      NF = "" : If C > 1 Then If A(1) <> "" Then NF = FSO.BuildPath(A(1),BN)
      If NF = "" Then NF = FSO.BuildPath(FSO.GetParentFolderName(F), BN)
      If Not FSO.FolderExists(NF) Then FSO.CreateFolder(NF)
      ShAp.NameSpace(NF).MoveHere F
    End If
  End If
Loop Until List.AtEndOfStream : List.Close
Если имя файла не соответствует искомой в выражении части, то он остаётся на месте.
Последний раз редактировалось Flasher Пн мар 20, 2017 15:39, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Badboy писал(а):Подскажите пожалуйста, как изменить этот скрипт, чтобы он создавал папки по ЧАСТИ имени файла, а не по всему имени файла.
Пример:
Есть файл: 2016.01.01.(14-01-16).jpg
Нужно создать папку (2016.01.01) по первым 10 символам, и поместить туда все файлы, начинающиеся на эти 10 символов
Изменить

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

  If WScript.Arguments.Count > 1 Then 
    NewFilePath = WScript.Arguments(1) & FileName 
  Else 
    NewFilePath = FilePath & "" & FileName 
  End If 
на

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

  If WScript.Arguments.Count > 1 Then 
    NewFilePath = WScript.Arguments(1) & Left(FileName, 10) 
  Else 
    NewFilePath = FilePath & "" & Left(FileName, 10) 
  End If 
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Badboy
Замечание за оверквотинг. Код исходного скрипта заменён ссылкой.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Badboy
Сообщения: 2
Зарегистрирован: Пн мар 20, 2017 02:08

Сообщение Badboy »

Avada
Прошу прощения, больше не буду

Batya
Огромное спасибо!
То что надо!

Flasher
Спасибо!
Попробую
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Badboy
Вы и сейчас продолжаете те же нарушения. Например, полное цитирование сообщения модератора из предыдущего поста — точно такой же оверквотинг. А в ответах на предложения по кодам надо, во-первых, указывать ники людей, которым вы отвечаете (они вставляются в текст элементарно —кликом по нику в нужном сообщении), а во-вторых, не цитировать кусок кода (и, напротив, нормально обозначать чужую фразу, если она действительно нужна). А ещё при подготовке сообщения рекомендуется пользоватьяс режимом предварительного просмотра. Всё это приведено в норму, отвечать не надо.
Кроме того, будьте любезны ставить в конце фраз точки, чтобы люди не гадали, закончили вы мысль или отправили черновик сообщения случайно.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Ответить