Страница 2 из 3
Добавлено: Пт июл 29, 2011 15:54
Flasher
MVV писал(а):Num+ выделяет только файлы, Shift+Num+ - файлы и папки соответственно.
А для папок ещё клавишу добавлять? Смысл?
MVV писал(а):Вот насчет автоматизации - если лень делать лишние клики, то да, скрипт удобнее.
Автоматизация - это не только ублажение лени, это ещё и ускорение процесса. Эти "клики" ещё и помнить надо ко всему прочему.
MVV писал(а):А если нужно быстро выделить группу файлов с именами произвольной длины - то удобнее именно таким способом, т.к. не нужно ничего исправлять, а просто вписать нужное выражение.
А где нужно что-то исправлять? Уж точно не удобнее, чем скриптами, что идут выше.
MVV писал(а):Которое, кстати, состоит всего из десятка символов.
Вот и подсчитай сколько уйдёт времени у простого юзера на вспоминание, вбитие этого десятка символов, когда в скрипте достаточно ввести всего 1-2 цифры.
Добавлено: Пт июл 29, 2011 15:59
MVV
Если постоянно использовать чужие скрипты, ничего нового не узнаешь:) а так, глядишь, и откроется что-то новое. Завтра понадобится выделять имена с длиной в некотором диапазоне, и придется переписывать скрипт, а тут уже всё работает, и не глючит))
Спорить ни с кем ни о чём не собираюсь, это личное дело каждого.
Добавлено: Пт июл 29, 2011 16:00
shveicar
Хм, стоит попробовать перед указаной строкой добавить:
После добавления в скрипт "задержки" стало заметно, как сначала выскакивает окно (ввода количества символов.. с буквой V..)? а затем появляется сообщение, что файлы не найдены.
Он должен срабатывать как с выделением, так и с его отсутсвием
Ну с этим, я разобрался,- проблема была в запущенной второй копией totala. (извиняюсь,- мой косяк).
MVV писал(а):Если постоянно использовать чужие скрипты, ничего нового не узнаешь
Если стоит цель научиться писать скрипты, - то лучше пойти на "курсы скрипто-писателей" А если речь идет о
конкретной проблеме то для
простого юзера проще воспользоваться плагином filex, чем создавать символьные комбинации. (без обид).
Добавлено: Пт июл 29, 2011 16:09
Flasher
MVV писал(а):Если постоянно использовать чужие скрипты, ничего нового не узнаешь
Что на уме и использующего изветсно лучше ему самому. Скрипты можно использовать не только по назначению, но и как вспомогательный материал для реализации новых скриптов, в т.ч. и своих. За приведённой некогда литературой ко мне в личку обращаются именно с целью обучаться самостоятельно.
MVV писал(а):Завтра понадобится выделять имена с длиной в некотором диапазоне, и придется переписывать скрипт
А вот и не угадал. Во втором скрипте можно вписать числа в виде <Min>,<Max>, и будет тебе диапазон.
shveicar писал(а):После добавления в скрипт "задержки" стало заметно, как сначала выскакивает окно (ввода количества символов.. с буквой V..)? а затем появляется сообщение, что файлы не найдены.
Странно, по логике с такой маленькой задержкой не должно быть видно. А разные значения подставлялись?
Добавлено: Пт июл 29, 2011 16:26
shveicar
Странно, по логике с такой маленькой задержкой не должно быть видно
Ну если так, тогда у меня проблемы со зрением.
А разные значения подставлялись?
конечно - ведь первый вариант скрипта, при тех-же значениях срабатывает.
Добавлено: Пт июл 29, 2011 16:32
Flasher
shveicar писал(а):Ну это я так привел, вдруг пригодится для создания нового скрипта.
Так вот я не могу понять, что этот скрипт должен из себя представлять - склеянный вариант или просто достаточно учесть число символов, которое он отправит в буфер?
shveicar писал(а):Ну если так, тогда у меня проблемы со зрением.
Имеется в виду, что с задержкой, что без неё - разницы визуально человек не должен ощутить. Это всего лишь 1/50 секунды.
shveicar писал(а):конечно - ведь первый вариант скрипта, при тех-же значениях срабатывает.
Вообще-то я про
Sleep.
Добавлено: Пт июл 29, 2011 16:50
shveicar
Flasher писал(а):
Так вот я не могу понять, что этот скрипт должен из себя представлять - склеянный вариант или просто достаточно учесть число символов, которое он отправит в буфер?
Удобнее, (и главное, более быстро) будет - если учесть число символов, которое он отправит в буфер, сразу из выделенного имени файла.
Flasher писал(а):
Вообще то я про Sleep
ну так я в обоих скриптах добавил это значение (на всякий случай отрывок из второго скрипта)
.Sleep 20
если еще добавить время, например 80, то события, перечисленные мной выше- протекают ещё более плавно. Да и потом визуально, коды в обоих скриптах, сильно отличаются.
Добавлено: Пт июл 29, 2011 17:01
Flasher
shveicar писал(а):Удобнее, (и главное, более быстро) будет - если учесть число символов, которое он отправит в буфер, сразу из выделенного имени файла.
Полностью ТЗ для скрипта можно увидеть? У меня пока в голове не укладывается, как из выделенного имени можно отправить число в буфер. К тому же из названия js-скрипта видно, что речь идёт о подсчёте кол-ва файлов. Как это кол-во относится к кол-ву символов выделяемых файлов мне тоже пока непонятно.
Касаемо задержки - похоже машина слабенькая. А если так?:
Код: Выделить всё
With CreateObject("TCScript.Helper")
T = .GetTextFromClip
.SetTextToClip("<^.{" &Name&"}$")
.Pause = 40
.SendCommand(331&Types)
.Pause = 40
.SendKeystroke "^V~"
.SetTextToClip(T)
End With
Добавлено: Пт июл 29, 2011 19:53
shveicar
Flasher писал(а):Полностью ТЗ для скрипта можно увидеть?
ТЗ-
шаг №1 выбор типа выделяемых данных(1/2/3- все, файлы, папки)
шаг №2 Копирование выделенного имени файла в буфер обмена с дальнейшей вставкой (преобразование с помощью скрипта имени в числовое значение) во второе поле (в данном случае - поле выделения нужного количества символов).
шаг №3 выделение найденных данных. Согласен, с js-скриптом я привел пример немного не в тему. Но вот существует ведь
скрипт Создание текстового файла с содержимым буфера обмена, Другое дело как их преобразовать в цифры? Видел также аналогичный скрипт, который присваивает создаваемому файлу имя из части содержимого, но опять-же это не цифры а символы. В-общем если проблема, слишком сложная, не стоит над ней ломать голову, в конце концов, можно и в ручную подсчитать эти злополучные символы. Спасибо за Помощь.
Добавлено: Пт июл 29, 2011 20:08
Flasher
shveicar писал(а):Копирование выделенного имени файла в буфер обмена с дальнейшей вставкой (преобразование с помощью скрипта имени в числовое значение) во второе поле (в данном случае - поле выделения нужного количества символов)
Я же выше объяснил, что нет смысла использовать это поле. Тут буфер в принципе не нужен. Да, и что значит "преобразование имени в числовое значение"? Может, всё-таки простое вычисление длины имени?
И, как я понимаю, это уже не к ТЗ относится, а к идее реализации.
Пример ТЗ: по нажатию кнопки выделять файлы/каталоги, имеющие длину имён, равную длине имени файла/каталога под курсором.
Ничего не напутал?
shveicar писал(а):Другое дело как их преобразовать в цифры?
Кого - их?
shveicar писал(а):Видел также аналогичный скрипт, который присваивает создаваемому файлу имя из части содержимого, но опять-же это не цифры а символы.
Бррр, у меня уже голова кругом. "Присваивает файлу", "не цифры а символы". Как-то пограмотней мысли надо излагать.
shveicar писал(а):В-общем если проблема, слишком сложная, не стоит над ней ломать голову
"Проблема" не была бы столь "сложной", если бы задача была чётко обрисована без лишей воды с инородными скриптами/примерами и т.п.
Добавлено: Пт июл 29, 2011 21:01
shveicar
Flasher писал(а):Может, всё-таки простое вычисление длины имени?
Ну-можно и так сказать.
Flasher писал(а):ТЗ - это: по нажатию кнопки выделять файлы, имеющие длину имён, равную длине имени файла под курсором.
Ничего не напутал?
А что тут можно путать?
Flasher писал(а):Кого - их?
я имел ввиду символы(буквы, цифры,пробелы и другие знаки встречающиеся в именах)
Flasher писал(а):Как-то пограмотней мысли надо излагать
Буду стараться.
Добавлено: Пт июл 29, 2011 21:03
Flasher
shveicar писал(а):А что тут можно путать?
Так не в моём примере путать. Так мой пример соответствует желаемому?
Добавлено: Пт июл 29, 2011 21:06
shveicar
Конечно соответствует.
Добавлено: Пт июл 29, 2011 21:20
Flasher
Удалить
Код: Выделить всё
Name = InputBox("Введите число символов:", "Выделение элементов списка по числу символов")
If Len(Name) = 0 Or Not IsNumeric(Name) Then WScript.Quit
Заменить в двух местах
на
Код: Выделить всё
If Len(F.Name) = Len(WScript.Arguments(0))
Прописать %N в параметрах.
Для новой кнопки не забыть очистить путь запуска.
Добавлено: Пт июл 29, 2011 22:15
Andrey_A
Я пользуюсь таким скриптом, может поможет, если необходимо подправьте под себя
Код: Выделить всё
'======================== Описание =======================================
' Выделяет папки\файлы по к-ву символов в именах, которое задаётся условием
' Выделяет так же в окне после поиска и при cm_DirBranch
'======================= Дополнение =======================================
' Всвязи с проблемой Helpera (при большом к-ве файлов) использована утилита NirCmd.exe
' После обработки пути (имена) записываются в файл MarkerList.txt
' Это очень удобно, т.к. сохранённое выделение можно заново загрузить!!!
'======================== Параметры =======================================
' Может быть от 0 до 2-параметров
' {Условия поиска для выделения} {Файл список}
' Условий может быть три варианта (первый параметр)
' =N - выделяет файлы\папки, в именах которых N символов
' <N - выделяет файлы\папки, в именах которых меньше N символов
' >N - выделяет файлы\папки, в именах которых больше N символов
'======================== Примеры ======================================
' без параметров - выделяет все имена в текущей панели, в которых встречается условие, введённое в окне для ввода условия
' <5 - выделяет все имена в текущей панели, в которых меньше 5 символов
' 0 %L - выделяет все имена в выделенном, в которых встречается условие, введённое в окне для ввода условия
' =6 %L - выделяет все имена в выделенном, в которых 6 символов
'
' Автор: Аверин Андрей
' Версия: 1.0 (17.12.2010)
Option Explicit
Dim FSO, WSH, TCS, Num, Sym, Stroka, FF, ListFile, Name, Cnt, List, PathG, TextZ, Data, MZList, MyFile, Program, ln
Set TCS = CreateObject("TCScript.Helper")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = WScript.CreateObject("WScript.Shell")
'======================== Изменяемые пути ===================================
Program = GetPath("%COMMANDER_PATH%\NirCmd.exe")
MZList = GetPath("%COMMANDER_PATH%\Files\Lists\MarkerList.txt")
'==========================================================================
TCS.LockTC True
If WScript.Arguments.Count = 2 Then
Set ListFile = FSO.OpenTextFile(GetPath(WScript.Arguments(1)), 1)
FF = ListFile.ReadAll
if WScript.Arguments(0) = "0" Then
MSBOXX
Else
Stroka = WScript.Arguments(0)
End If
Else
TCS.SendCommand ("cm_SelectAll") ' Выбираем всё
WScript.Sleep 200 ' Пауза
TCS.SendCommand ("cm_CopyFullNamesToClip") ' Копируем в буфер
FF = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
TCS.SendCommand ("cm_ClearAll")
if WScript.Arguments.Count = 1 Then
Stroka = WScript.Arguments(0)
Else
MSBOXX
End If
End If
PathG = TCS.GetSrcPath & "\"
Sym = Mid(Stroka,1,1)
Num = CInt(Replace(Stroka, Sym, ""))
Data = Split(FF, vbNewLine)
If UBound(Data) > 1 Then
For Cnt = 0 To UBound(Data)
Name = FSO.GetBaseName(Data(Cnt))
ln = Len(Name)
Select Case Sym
Case "="
if ln = Num Then TextW
Case ">"
if ln > Num Then TextW
Case "<"
if ln < Num Then TextW
Case Else
MsgBox "Введено неправильное условие для выделения" & vbNewLine &_
"Повторите заново!" , vbOKOnly & vbCritical, "Выделение файлов по к-ву символов в имени"
WScript.Quit
End Select
Next
Set MyFile = FSO.CreateTextFile(MZList, True) ' Создаём файл
MyFile.Write(TextZ) ' Сохраняем выделение в файл
MyFile.Close
' Вызываем NirCmd.exe для отправки текста в буфер
WSH.Run Chr(34) & Program & Chr(34) & " " & "clipboard readfile " & Chr(34) & MZList & Chr(34) ,2,True
TCS.SendCommand "cm_LoadSelectionFromClip", True ' Выделяем из буфера
End if
Set WSH = Nothing
Set FSO = Nothing
Set TCS = Nothing
WScript.Quit
Sub MSBOXX
Stroka = InputBox("Введите Условие поиска по к-ву символов в" & vbNewLine &_
"именах файлов для дальнейшего выделения" & vbNewLine &_
"Может быть 3 условия, Примеры:" & vbNewLine &_
"=5 выделяются имена, в которых 5 символов" & vbNewLine &_
"<5 выделяются имена, меньше 5 символов" & vbNewLine &_
">5 выделяются имена, больше 5 символов" , "Выделение файлов по к-ву символов в имени", "=8")
if Stroka = "" Then
MsgBox "Не введены условия для выделения!" & vbNewLine &_
"Повторите заново!" , vbOKOnly & vbCritical, "Выделение файлов по к-ву символов в имени"
WScript.Quit
End If
End Sub
Sub TextW
TextZ = TextZ & Replace(UCase(Data(Cnt)), UCase(PathG), "") & vbNewLine
End Sub
Function GetPath(pPath)
GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function