Страница 14 из 15

Добавлено: Сб авг 09, 2014 13:25
Flasher
job.forme писал(а):а вот такой вариант
уже есть. Поиском пользоваться умеем?

Добавлено: Сб авг 09, 2014 14:47
job.forme
Flasher, ага спасибо, я первый день на форуме, ооооочень большой)) сегодня утром нашел указанную Вами тему. Попробовал - и вот вопрос - как сделать, что бы создавалось в ТЕКУЩЕЙ (активной) панели? И вариант с последующим открытием тоже интересен, как я понял остался недосказанным...

Добавлено: Сб авг 09, 2014 15:49
Flasher
job.forme
Всё там досказано. Параметры все указаны. Если есть по ним вопросы, то в указанной теме и надо спрашивать.

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

Добавлено: Сб фев 28, 2015 20:14
UFO_hA
Очень нуждаюсь в помощи. Срочно нужен скрипт. Задача: Есть папка с большим количеством фото. Необходимо их отсортировать следующим способом. Выделяются нужные картинки, и при нажатии на кнопку создаётся новая папка(в той же папке где лежат фото) и в эту папку перемещаются выделенные ранее фото. Требований к названием папок нет(ну разве только что бы названия не повторялись.).

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

Добавлено: Сб фев 28, 2015 21:04
UFO_hA
Уважаемый Avada. Я вас очень прошу, ткните пальцем. Всё что я здесь пока прочитал не подходит. А времени свободного просто нет. Буду очень благодарен.

Добавлено: Сб фев 28, 2015 21:20
Flasher
UFO_hA писал(а):Всё что я здесь пока прочитал не подходит. А времени свободного просто нет.
Прочесть последний пост на предыщущей странице, а потом последующие уже на этой - это проблема, на это нужно много времени?

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

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

Добавлено: Пн мар 20, 2017 09:44
sa
Badboy
Можно обойтись без скрипта, с помощью группового переименования.
Выделить файлы -> (Ctrl+M) -> Маска для: имени файла [N1-10]\[N] -> Выполнить.

Добавлено: Пн мар 20, 2017 09:54
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

Добавлено: Пн мар 20, 2017 14:16
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
Если имя файла не соответствует искомой в выражении части, то он остаётся на месте.

Добавлено: Пн мар 20, 2017 15:30
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 

Добавлено: Пн мар 20, 2017 17:15
Avada
Badboy
Замечание за оверквотинг. Код исходного скрипта заменён ссылкой.

Добавлено: Пн мар 20, 2017 21:25
Badboy
Avada
Прошу прощения, больше не буду

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

Flasher
Спасибо!
Попробую

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