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

Выделить файлы по созданному списку

Добавлено: Пт окт 19, 2012 13:39
Wankuwer
Всем привет и сразу к делу.

1) Есть файл (Список) D:/Data.txt его содержимое:
  • Tumba
    Avto
    Luk
    Planeta

2) В директории D:/Arhiv/ Находятся файлы:
  • Nanunaki.jpg
    Tumba.jpg
    Avto.jpg
    Robot.jpg
    Semki.jpg
    Luk.jpg
    Planeta.jpg
    Lef.jpg


Вопрос: Как автоматом выделить файлы, имена которых есть в текстовом документе Data.txt ?

Просмотрел множество форумов, но конкретного и простого ответа не нашёл, возможно плоха смотрел, но сил уже просто нет. Речь идет о огромном массиве файлов (свыше 600 файлов), а также о n-ом наличии имен в текстовом документе, следовательно самостоятельное выделение файлов - утомительная и затратная по времени "работа".

Добавлено: Пт окт 19, 2012 14:41
Batya
Используем Script Content Plugin.
Содержимое script.ini:
Код:

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

[Script] 
Section=General 

[General] 
LongName=0
ParseDirs=0
Script=General.vbs
В каталоге плагина должен лежать файл General.vbs с содержимым:

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

'===========================================================================
' Колонка Result возвращает признак наличия файла\каталога в указанном файле-списке:
'   0 - файл\каталог НЕ найден; 1 - файл\каталог найден
'===========================================================================

'========== Изменяемые параметры ===========================================
Const FileList = "D:/Data.txt" 'Файл-список
'===========================================================================

Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1
content = Result
Set FSO = Nothing

Function Result
  Dim List, dlm
  Result = 0
  If Not FSO.FileExists(FileList) Then
    Exit Function
  End If 
  
  On Error Resume Next
  List = FSO.OpenTextFile(FileList, ForReading, False).ReadAll
  If Err.Number <> 0 Then
    Exit Function
  End If
  On Error GoTo 0
  
  dlm = vbNewLine
  If InStr(1, dlm & List & dlm, dlm & FSO.GetBaseName(filename) & dlm, vbTextCompare) > 0 Then
    Result = 1
  End If
End Function
Как пользоваться для поиска.
Для выделения меняются пункты:
6. Нажать клавишу Num+. Нажать кнопку "Шаблон..."
13. Нажать "Записать". Ввести имя нового шаблона поиска, нажать "ОК". Нажать "ОК" для выбора шаблона.
14. Радоваться выделению файлов.

Добавлено: Пт окт 19, 2012 15:17
Wankuwer
Batya - ОГРОМНОЕ ВАМ СПАСИБО!!!
Все заработало!
Благодаря Вам, Праблема - РЕШЕНА! :wink:

Добавлено: Пт окт 19, 2012 16:52
MVV
Есть также способ без дополнительных приспособлений. Копируем файл со списком имён в папку D:/Arhiv, к каждому имени добавляем расширение (на раз-два в любом редакторе, поддерживающем регулярные выражения: заменить $ на .jpg), чтобы имена были полными (можно использовать маски):
Tumba.jpg
Avto.jpg
Luk.jpg
Planeta.jpg
Tumba.*
Avto.*
Luk.*
Planeta.*
Далее копируем путь к файлу списка, открываем поиск в тотале и в поле "Место поиска" указываем @ и путь к файлу-списку. Запускаем. Посылаем результат на панель, делаем что требуется.

Пути в файле-списке должны быть относительно папке, где файл списка лежит. Если он лежит в папке с файлами, то достаточно просто имён.

Добавлено: Пт окт 19, 2012 17:54
Wankuwer
MVV к большому сожалению, не работает, вот скрин.

Текстовый документ Data.txt который лежит там же где и файлы (D:\Arhiv) содержит:
  • Ananas.jpg
    Zebra.jpg

Файлы в дериктории: D:\Arhiv
  • Ananas.jpg
    Kokos.jpg
    Planeta.jpg
    Zebra.jpg
    Data.txt

В Total Commander жму Alt+7
  • Искать файлы: Оставляю пустым.
    Место поиска: @ "D:\Arhiv\Data.txt"
    Место поиска: @ D:\Arhiv\Data.txt
    Место поиска: @ D:\Arhiv
На все попытки: Указанного пути не существует!

Способ предложенный Batya работает отлично. Сложности могут возникнуть у тех, кто не хочет заворачиваться на начальном этапе и прибегать к дополнительным плагинам.

То что предлагайте Вы, так же интересно! Можно по подробнее?

Добавлено: Пт окт 19, 2012 18:03
sa
Wankuwer писал(а): Указанного пути не существует!
Надо обновить версию тотала.

Добавлено: Пт окт 19, 2012 18:11
Avada
Wankuwer
Эта фича работает только в TC версий 8.0 и выше. Подробности — в справке.

Добавлено: Пт окт 19, 2012 19:26
MVV
Кроме того, не надо ставить пробел между собакой @ и путём к списку.

Добавлено: Пт окт 19, 2012 19:31
Tol!k
MVV писал(а):Tumba.*
Avto.*
Luk.*
Planeta.*
? а нельзя просто

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

Tumba 
Avto 
Luk 
Planeta

Добавлено: Пт окт 19, 2012 19:33
MVV
Tol!k писал(а):? а нельзя просто
Ну я как бы проверял. :wink:

Добавлено: Ср дек 12, 2012 12:46
Sergiusnet
А если нужно найти не файлы, а папки, как тогда быть?

Добавлено: Сб дек 15, 2012 15:45
Flasher
Убрать * на конце, но тогда будут найдены ещё и одноимённые файлы без расширений.

Re: Выделить файлы по созданному списку

Добавлено: Вс дек 16, 2012 02:37
Sergiusnet
Wankuwer
выделить все нужные файлы по списку можно скопировав имена в буфер и через меню выделение-загрузить выделение из буфера, скриптов никаких не нужно и поисков

Добавлено: Вс дек 16, 2012 09:15
Avada
Sergiusnet
А попроще никак? Зачем что-то копировать в буфер, когда по исходному условию в каталоге уже есть текстовик с именами файлов? Выполняем команду "Загрузить выделение из файла" (cm_LoadSelectionFromFile) — и всё.

Добавлено: Пн май 27, 2013 21:02
Slamzor
Добрый вечер!
У меня файлы в папке, имеют следующие названия: некий шифр(заканчивается на две латинские буквы и четыре цифры - FI00021 в примере)_имя_версия_дата(год_месяц_день).
Нужно разделить файлы на две "корзины", с помощью колонки из екселя-списка. В этом списке есть имена.

Вопрос, как можно выделить, чтобы впоследствии скопировать файлы по списку, учитывая дату создания. Нужны файлы с последней датой.
Пример:
50_3_МКО_06_FI00021_Отчет_01_2013_03_23

Что сделал:
1. Установил Script Content Plugin ( в настройках отображен-C:\program files\ ... \script.wdx
2. Const FileList = "C:FileList.txt" 'Файл-список.
3. В General прописал путь C:FileList.txt.
4. В FileList вношу строку для поиска Отчет.
5. Выполняю
Для выделения меняются пункты:
6. Нажать клавишу Num+. Нажать кнопку "Шаблон..."
13. Нажать "Записать". Ввести имя нового шаблона поиска, нажать "ОК". Нажать "ОК" для выбора шаблона.
14. Радоваться выделению файлов.
7.Получаю выделение всех файлов
Где я ошибся?