View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jul 29, 2011 15:54 Post subject: |
|
|
MVV wrote: | Num+ выделяет только файлы, Shift+Num+ - файлы и папки соответственно. | А для папок ещё клавишу добавлять? Смысл?
MVV wrote: | Вот насчет автоматизации - если лень делать лишние клики, то да, скрипт удобнее. | Автоматизация - это не только ублажение лени, это ещё и ускорение процесса. Эти "клики" ещё и помнить надо ко всему прочему.
MVV wrote: | А если нужно быстро выделить группу файлов с именами произвольной длины - то удобнее именно таким способом, т.к. не нужно ничего исправлять, а просто вписать нужное выражение. | А где нужно что-то исправлять? Уж точно не удобнее, чем скриптами, что идут выше.
MVV wrote: | Которое, кстати, состоит всего из десятка символов. | Вот и подсчитай сколько уйдёт времени у простого юзера на вспоминание, вбитие этого десятка символов, когда в скрипте достаточно ввести всего 1-2 цифры. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Fri Jul 29, 2011 15:59 Post subject: |
|
|
Если постоянно использовать чужие скрипты, ничего нового не узнаешь а так, глядишь, и откроется что-то новое. Завтра понадобится выделять имена с длиной в некотором диапазоне, и придется переписывать скрипт, а тут уже всё работает, и не глючит))
Спорить ни с кем ни о чём не собираюсь, это личное дело каждого. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Fri Jul 29, 2011 16:00 Post subject: |
|
|
Quote: | Хм, стоит попробовать перед указаной строкой добавить: | После добавления в скрипт "задержки" стало заметно, как сначала выскакивает окно (ввода количества символов.. с буквой V..)? а затем появляется сообщение, что файлы не найдены. Quote: | Он должен срабатывать как с выделением, так и с его отсутсвием | Ну с этим, я разобрался,- проблема была в запущенной второй копией totala. (извиняюсь,- мой косяк).
MVV писал(а): Quote: | Если постоянно использовать чужие скрипты, ничего нового не узнаешь | Если стоит цель научиться писать скрипты, - то лучше пойти на "курсы скрипто-писателей" А если речь идет о конкретной проблеме то для простого юзера проще воспользоваться плагином filex, чем создавать символьные комбинации. (без обид).
Last edited by shveicar on Fri Jul 29, 2011 16:15; edited 1 time in total |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jul 29, 2011 16:09 Post subject: |
|
|
MVV wrote: | Если постоянно использовать чужие скрипты, ничего нового не узнаешь | Что на уме и использующего изветсно лучше ему самому. Скрипты можно использовать не только по назначению, но и как вспомогательный материал для реализации новых скриптов, в т.ч. и своих. За приведённой некогда литературой ко мне в личку обращаются именно с целью обучаться самостоятельно.
MVV wrote: | Завтра понадобится выделять имена с длиной в некотором диапазоне, и придется переписывать скрипт | А вот и не угадал. Во втором скрипте можно вписать числа в виде <Min>,<Max>, и будет тебе диапазон.
shveicar wrote: | После добавления в скрипт "задержки" стало заметно, как сначала выскакивает окно (ввода количества символов.. с буквой V..)? а затем появляется сообщение, что файлы не найдены. | Странно, по логике с такой маленькой задержкой не должно быть видно. А разные значения подставлялись? |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Fri Jul 29, 2011 16:26 Post subject: |
|
|
Quote: | Странно, по логике с такой маленькой задержкой не должно быть видно | Ну если так, тогда у меня проблемы со зрением. Quote: | А разные значения подставлялись? | конечно - ведь первый вариант скрипта, при тех-же значениях срабатывает. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jul 29, 2011 16:30 Post subject: |
|
|
shveicar wrote: | Ну это я так привел, вдруг пригодится для создания нового скрипта. | Так вот я не могу понять, что этот скрипт должен из себя представлять - склеянный вариант или просто достаточно учесть число символов, которое он отправит в буфер?
shveicar wrote: | Ну если так, тогда у меня проблемы со зрением. | Имеется в виду, что с задержкой, что без неё - разницы визуально человек не должен ощутить. Это всего лишь 1/50 секунды.
shveicar wrote: | конечно - ведь первый вариант скрипта, при тех-же значениях срабатывает. | Вообще-то я про Sleep. |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Fri Jul 29, 2011 16:50 Post subject: |
|
|
Flasher wrote: |
Так вот я не могу понять, что этот скрипт должен из себя представлять - склеянный вариант или просто достаточно учесть число символов, которое он отправит в буфер? |
Удобнее, (и главное, более быстро) будет - если учесть число символов, которое он отправит в буфер, сразу из выделенного имени файла.
Flasher wrote: |
Вообще то я про Sleep | ну так я в обоих скриптах добавил это значение (на всякий случай отрывок из второго скрипта) Code: | .SendCommand(331&Types) |
.Sleep 20
Code: | .SendKeystroke "^V~" | если еще добавить время, например 80, то события, перечисленные мной выше- протекают ещё более плавно. Да и потом визуально, коды в обоих скриптах, сильно отличаются.
Last edited by shveicar on Fri Jul 29, 2011 17:28; edited 3 times in total |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jul 29, 2011 16:58 Post subject: |
|
|
shveicar wrote: | Удобнее, (и главное, более быстро) будет - если учесть число символов, которое он отправит в буфер, сразу из выделенного имени файла. | Полностью ТЗ для скрипта можно увидеть? У меня пока в голове не укладывается, как из выделенного имени можно отправить число в буфер. К тому же из названия js-скрипта видно, что речь идёт о подсчёте кол-ва файлов. Как это кол-во относится к кол-ву символов выделяемых файлов мне тоже пока непонятно.
Касаемо задержки - похоже машина слабенькая. А если так?:
Code: | With CreateObject("TCScript.Helper")
T = .GetTextFromClip
.SetTextToClip("<^.{" &Name&"}$")
.Pause = 40
.SendCommand(331&Types)
.Pause = 40
.SendKeystroke "^V~"
.SetTextToClip(T)
End With
|
|
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Fri Jul 29, 2011 19:53 Post subject: |
|
|
Flasher wrote: | Полностью ТЗ для скрипта можно увидеть? |
ТЗ- шаг №1 выбор типа выделяемых данных(1/2/3- все, файлы, папки) шаг №2 Копирование выделенного имени файла в буфер обмена с дальнейшей вставкой (преобразование с помощью скрипта имени в числовое значение) во второе поле (в данном случае - поле выделения нужного количества символов). шаг №3 выделение найденных данных. Согласен, с js-скриптом я привел пример немного не в тему. Но вот существует ведь скрипт Создание текстового файла с содержимым буфера обмена, Другое дело как их преобразовать в цифры? Видел также аналогичный скрипт, который присваивает создаваемому файлу имя из части содержимого, но опять-же это не цифры а символы. В-общем если проблема, слишком сложная, не стоит над ней ломать голову, в конце концов, можно и в ручную подсчитать эти злополучные символы. Спасибо за Помощь. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jul 29, 2011 20:08 Post subject: |
|
|
shveicar wrote: | Копирование выделенного имени файла в буфер обмена с дальнейшей вставкой (преобразование с помощью скрипта имени в числовое значение) во второе поле (в данном случае - поле выделения нужного количества символов) | Я же выше объяснил, что нет смысла использовать это поле. Тут буфер в принципе не нужен. Да, и что значит "преобразование имени в числовое значение"? Может, всё-таки простое вычисление длины имени?
И, как я понимаю, это уже не к ТЗ относится, а к идее реализации.
Пример ТЗ: по нажатию кнопки выделять файлы/каталоги, имеющие длину имён, равную длине имени файла/каталога под курсором.
Ничего не напутал?
shveicar wrote: | Другое дело как их преобразовать в цифры? | Кого - их?
shveicar wrote: | Видел также аналогичный скрипт, который присваивает создаваемому файлу имя из части содержимого, но опять-же это не цифры а символы. | Бррр, у меня уже голова кругом. "Присваивает файлу", "не цифры а символы". Как-то пограмотней мысли надо излагать.
shveicar wrote: | В-общем если проблема, слишком сложная, не стоит над ней ломать голову | "Проблема" не была бы столь "сложной", если бы задача была чётко обрисована без лишей воды с инородными скриптами/примерами и т.п. |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Fri Jul 29, 2011 21:01 Post subject: |
|
|
Flasher wrote: | Может, всё-таки простое вычисление длины имени? | Ну-можно и так сказать. Flasher wrote: | ТЗ - это: по нажатию кнопки выделять файлы, имеющие длину имён, равную длине имени файла под курсором.
Ничего не напутал? | А что тут можно путать? Flasher wrote: | Кого - их? | я имел ввиду символы(буквы, цифры,пробелы и другие знаки встречающиеся в именах) Flasher wrote: | Как-то пограмотней мысли надо излагать | Буду стараться. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jul 29, 2011 21:03 Post subject: |
|
|
shveicar wrote: | А что тут можно путать? | Так не в моём примере путать. Так мой пример соответствует желаемому? |
|
Back to top |
|
|
shveicar
Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Fri Jul 29, 2011 21:06 Post subject: |
|
|
Конечно соответствует. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jul 29, 2011 21:20 Post subject: |
|
|
Удалить
Code: | Name = InputBox("Введите число символов:", "Выделение элементов списка по числу символов")
If Len(Name) = 0 Or Not IsNumeric(Name) Then WScript.Quit |
Заменить в двух местах
Code: | If Len(F.Name) = Abs(Name) | на
Code: | If Len(F.Name) = Len(WScript.Arguments(0)) |
Прописать %N в параметрах.
Для новой кнопки не забыть очистить путь запуска. |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Fri Jul 29, 2011 22:15 Post subject: |
|
|
Я пользуюсь таким скриптом, может поможет, если необходимо подправьте под себя
Code: | '======================== Описание =======================================
' Выделяет папки\файлы по к-ву символов в именах, которое задаётся условием
' Выделяет так же в окне после поиска и при 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 |
Last edited by Andrey_A on Fri Jul 29, 2011 23:15; edited 1 time in total |
|
Back to top |
|
|
|
|
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
|