Выделение файлов через один
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Выделение файлов через один
Подскажите, пожалуйста, как выделить (или найти), например, все чётные файлы в папке, а то я с явовскими скриптами не в ладах.
[mod="CaptainFlint"]Тема перенесена в "Автоматизацию".[/mod]
[mod="CaptainFlint"]Тема перенесена в "Автоматизацию".[/mod]
antabu
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
antabu
Например, скриптом отсюда.
Например, скриптом отсюда.
- LonerD
- Сообщения: 1173
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Возможно, хотя явно и не указано нужно ли выделять только "обычные" файлы или все файлы (включая каталоги, которые являются частным видом файлов).Тут речь только о файлах.
Ещё вариант, с использованием сторонних утилит, тормознутый, но портабельный, без WSH Helper (может, подойдёт).
Можно сохранить шаблон поиска со строкой “Искать файлы:” вида IMG_\d*[02468]\.JPG и с галкой для “Рег. выраж.” Затем кнопкой с командой LOADSEARCH Имя шаблона находить нужные файлы и выводить их на панель. (В моём примере ищутся фото с чётными номерами: IMG_0002.JPG, IMG_4.JPG и т.п.)antabu писал(а):(или найти)
P.S.
Этот же шаблон можно использовать и для выделения, и в качестве фильтра.
Предложение от Mellomann
В конце списка может потребоваться ручная правка, поскольку последний элемент может быть выделен/невыделен ошибочно.
+ утилита TCFS2 навеяли кнопку:Insert + Вниз + Insert + Вниз + Insert + Вниз + Insert + Вниз + ...![]()
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "run_item(locktc,1) tcm(524)
loop(@<=1000 + send(`{INSERT}{DOWN 1}`)) run_item(locktc,0) redraw"
WCMICONS.DLL,39
Выделить элементы (числом не более указанного после @) с заданным интервалом (число после DOWN), начиная с элемента под курсором
-1
Я тоже, кстати, не пользуясь всяким внешним софтом, сделал простенький скрипт (подобный вроде где-то в общей теме по скриптам пробегал):
Выделяем всё с первого по последний, запускаем скрипт, и он жмет нужные клавиши за нас, снимая выделение с ненужных файлов. Выделение должно быть сплошным (хотя, думаю, иное решаемо с помощью cm_ShowOnlySelected и cm_SaveSelection). Для работы нужен назначенный хоткей для cm_GotoNextSelected, чтобы переходить к началу выделения. Единственное, не будет корректно выделять там где первый пункт не «..» (в корне), и выделение начинается с него, но это на практике особо смысла и не имеет.
Выделяем всё с первого по последний, запускаем скрипт, и он жмет нужные клавиши за нас, снимая выделение с ненужных файлов. Выделение должно быть сплошным (хотя, думаю, иное решаемо с помощью cm_ShowOnlySelected и cm_SaveSelection). Для работы нужен назначенный хоткей для cm_GotoNextSelected, чтобы переходить к началу выделения. Единственное, не будет корректно выделять там где первый пункт не «..» (в корне), и выделение начинается с него, но это на практике особо смысла и не имеет.
Код: Выделить всё
' zebra-mark.vbs (by helb)
' Помечает выделенные подряд файлы через один.
' В TC должен быть назначен хоткей на cm_GotoNextSelected (в данном случае Ctrl+Home), и, соответственно, указан в скрипте (^{Home}) (Ctrl=^,Shift=+,Alt=%)
' TC Parameter: %L
set FSO = CreateObject("Scripting.FileSystemObject")
set list = FSO.OpenTextFile(WScript.Arguments(0), 8, false)
cnt = list.line - 1
if cnt < 2 then WScript.Quit
with WScript.CreateObject("WScript.Shell")
'go to first selected: Home & cm_GotoNextSelected
.SendKeys "{Home}^{Home}"
cnt = cnt / 2
for i = 1 to cnt
.SendKeys "{Down}{Insert}"
next
end with
Ссылки на скрипты и так все собраны в этой теме.helb писал(а):подобный вроде где-то в общей теме по скриптам пробегал
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Да, из-за передачи листа происходит рефреш, и если что-то изменилось, выделение сбрасывается. Для отфильтрованной панели это всегда так.
Можно в конце после цикла добавить и восстанавливать запомненное выделение после сброса.
Еще вариант не с листом, а списком в командной строке — тут лимит примерно в 2500 файлов, но форсированного обновления нет:
Можно в конце после цикла
Код: Выделить всё
.SendKeys "<хоткей для cm_SaveSelection>"Еще вариант не с листом, а списком в командной строке — тут лимит примерно в 2500 файлов, но форсированного обновления нет:
Код: Выделить всё
' zebra-mark.vbs (by helb)
' Помечает выделенные подряд файлы через один.
' В TC должен быть назначен хоткей на cm_GotoNextSelected (в данном случае Ctrl+Home), и, соответственно, указан в скрипте (^{Home}) (Ctrl=^,Shift=+,Alt=%)
' TC Parameter: %s (лимит в ~2500 файлов)
cnt = WScript.Arguments.length
if cnt < 2 then WScript.Quit
with WScript.CreateObject("WScript.Shell")
'go to first selected: Home & cm_GotoNextSelected
.SendKeys "{Home}^{Home}"
cnt = cnt / 2
for i = 1 to cnt
.SendKeys "{Down}{Insert}"
next
end with