Выделить файлы по созданному списку
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3, 4, 5  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: Выделить файлы по созданному списку Author: WankuwerLocation: Москва PostPosted: Fri Oct 19, 2012 13:39
    —
Всем привет и сразу к делу.

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-ом наличии имен в текстовом документе, следовательно самостоятельное выделение файлов - утомительная и затратная по времени "работа".

#2:  Author: BatyaLocation: Москва, Россия PostPosted: Fri Oct 19, 2012 14:41
    —
Используем Script Content Plugin.
Содержимое script.ini:
Код:
Code:
[Script]
Section=General

[General]
LongName=0
ParseDirs=0
Script=General.vbs


В каталоге плагина должен лежать файл General.vbs с содержимым:
Code:
'===========================================================================
' Колонка 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. Радоваться выделению файлов.

#3:  Author: WankuwerLocation: Москва PostPosted: Fri Oct 19, 2012 15:17
    —
Batya - ОГРОМНОЕ ВАМ СПАСИБО!!!
Все заработало!
Благодаря Вам, Праблема - РЕШЕНА! Wink

#4:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Oct 19, 2012 16:52
    —
Есть также способ без дополнительных приспособлений. Копируем файл со списком имён в папку D:/Arhiv, к каждому имени добавляем расширение (на раз-два в любом редакторе, поддерживающем регулярные выражения: заменить $ на .jpg), чтобы имена были полными (можно использовать маски):
Quote:
Tumba.jpg
Avto.jpg
Luk.jpg
Planeta.jpg

Quote:
Tumba.*
Avto.*
Luk.*
Planeta.*

Далее копируем путь к файлу списка, открываем поиск в тотале и в поле "Место поиска" указываем @ и путь к файлу-списку. Запускаем. Посылаем результат на панель, делаем что требуется.

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

#5:  Author: WankuwerLocation: Москва PostPosted: Fri Oct 19, 2012 17:54
    —
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
На все попытки: Указанного пути не существует!

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

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

#6:  Author: sa PostPosted: Fri Oct 19, 2012 18:03
    —
Wankuwer wrote:
Указанного пути не существует!

Надо обновить версию тотала.

#7:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Oct 19, 2012 18:11
    —
Wankuwer
Эта фича работает только в TC версий 8.0 и выше. Подробности — в справке.

#8:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Oct 19, 2012 19:26
    —
Кроме того, не надо ставить пробел между собакой @ и путём к списку.

#9:  Author: Tol!kLocation: Арзамас PostPosted: Fri Oct 19, 2012 19:31
    —
MVV wrote:
Tumba.*
Avto.*
Luk.*
Planeta.*

? а нельзя просто
Code:
Tumba
Avto
Luk
Planeta

#10:  Author: MVVLocation: Ростов-Дон PostPosted: Fri Oct 19, 2012 19:33
    —
Tol!k wrote:
? а нельзя просто

Ну я как бы проверял. Wink

#11:  Author: Sergiusnet PostPosted: Wed Dec 12, 2012 12:46
    —
А если нужно найти не файлы, а папки, как тогда быть?

#12:  Author: FlasherLocation: Москва PostPosted: Sat Dec 15, 2012 15:45
    —
Убрать * на конце, но тогда будут найдены ещё и одноимённые файлы без расширений.

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

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

#15:  Author: Slamzor PostPosted: Mon May 27, 2013 21:02
    —
Добрый вечер!
У меня файлы в папке, имеют следующие названия: некий шифр(заканчивается на две латинские буквы и четыре цифры - 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. Выполняю
Quote:
Для выделения меняются пункты:
6. Нажать клавишу Num+. Нажать кнопку "Шаблон..."
13. Нажать "Записать". Ввести имя нового шаблона поиска, нажать "ОК". Нажать "ОК" для выбора шаблона.
14. Радоваться выделению файлов.

7.Получаю выделение всех файлов
Где я ошибся?



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2, 3, 4, 5  Next  :| |:
Page 1 of 5

Powered by phpBB © 2001, 2005 phpBB Group