Страница 1 из 12

Выделение файлов через один

Добавлено: Пн июн 25, 2012 12:37
antabu
Подскажите, пожалуйста, как выделить (или найти), например, все чётные файлы в папке, а то я с явовскими скриптами не в ладах.

[mod="CaptainFlint"]Тема перенесена в "Автоматизацию".[/mod]

Добавлено: Пн июн 25, 2012 12:59
Flasher

Добавлено: Пн июн 25, 2012 13:13
Mellomann
Insert + Вниз + Insert + Вниз + Insert + Вниз + Insert + Вниз + ... :lol:

Добавлено: Пн июн 25, 2012 13:35
Вахмурка

Добавлено: Пн июн 25, 2012 13:37
sa
antabu
Например, скриптом отсюда.

Добавлено: Пн июн 25, 2012 13:53
Flasher
sa
Тут речь только о файлах.

Добавлено: Пн июн 25, 2012 16:43
LonerD
Тут речь только о файлах.
Возможно, хотя явно и не указано нужно ли выделять только "обычные" файлы или все файлы (включая каталоги, которые являются частным видом файлов).

Ещё вариант, с использованием сторонних утилит, тормознутый, но портабельный, без WSH Helper (может, подойдёт).

Добавлено: Пн июн 25, 2012 17:59
Flasher
LonerD
Частный вид тут в контекст не вписывается.
С WSH Helper тоже можно добиться портабл. :wink:

Добавлено: Вт июн 26, 2012 06:56
antabu
Благодарю откликнувшихся. Поскольку файлы пронумерованы - воспользовался штатными средствами, советом Mellomann один раз, далее сохраняю выделение в текстовый файл и использую его многократно. Если число файлов в папке не превышает первоначальное - всё проходит.

Добавлено: Вт июн 26, 2012 16:28
sa
antabu писал(а):(или найти)
Можно сохранить шаблон поиска со строкой “Искать файлы:” вида IMG_\d*[02468]\.JPG и с галкой для “Рег. выраж.” Затем кнопкой с командой LOADSEARCH Имя шаблона находить нужные файлы и выводить их на панель. (В моём примере ищутся фото с чётными номерами: IMG_0002.JPG, IMG_4.JPG и т.п.)
P.S.
Этот же шаблон можно использовать и для выделения, и в качестве фильтра.

Добавлено: Пн фев 09, 2015 20:39
sa
Предложение от Mellomann
Insert + Вниз + Insert + Вниз + Insert + Вниз + Insert + Вниз + ... :lol:
+ утилита TCFS2 навеяли кнопку:

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

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
В конце списка может потребоваться ручная правка, поскольку последний элемент может быть выделен/невыделен ошибочно.

Добавлено: Чт фев 19, 2015 17:52
helb
Я тоже, кстати, не пользуясь всяким внешним софтом, сделал простенький скрипт (подобный вроде где-то в общей теме по скриптам пробегал):
Выделяем всё с первого по последний, запускаем скрипт, и он жмет нужные клавиши за нас, снимая выделение с ненужных файлов. Выделение должно быть сплошным (хотя, думаю, иное решаемо с помощью 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

Добавлено: Чт фев 19, 2015 17:59
Flasher
helb писал(а):подобный вроде где-то в общей теме по скриптам пробегал
Ссылки на скрипты и так все собраны в этой теме.

Добавлено: Пт фев 20, 2015 09:25
sa
helb
Заметил, что выделение сбрасывается в системных папках и при показе только выделенных объектов. В последнем случае сбрасывается и сам режим показа только выделенных.
Наверное, это плата за параметр %L…

Добавлено: Пт фев 20, 2015 11:32
helb
Да, из-за передачи листа происходит рефреш, и если что-то изменилось, выделение сбрасывается. Для отфильтрованной панели это всегда так.
Можно в конце после цикла

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

.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