Надо найти 40 файлов и удалить!

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Stud
Сообщения: 4
Зарегистрирован: Вт апр 06, 2010 20:56

Сообщение Stud »

А где это посмотреть? :oops:
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Stud писал(а):А где это посмотреть?
В смысле?
Я пытаюсь уточнить условия задачи.

Давай сначала. Опиши полностью, что ты хочешь.
Нет, я не сплю. Я просто медленно моргаю.
Stud
Сообщения: 4
Зарегистрирован: Вт апр 06, 2010 20:56

Сообщение Stud »

Условия задачи:
Нужно по файлу - списку найти файлы, указанный выше скрипт работает, но только если в списке указано полное имя файла с расширением.(Например "20000-b.jpg") Если убрать расширение или хотябы один последний символ из имени, то поиск ничего не находит. А надо чтобы поиск был по первым символам и без расширения. (Например "20000")?
Что надо поправить?
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Stud

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

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

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

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

Function Result
  Dim List, dlm, i, F
  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 & filename & dlm, vbTextCompare) > 0 Then
    Result = 1
    Exit Function
  End If
  For i = Len(filename) - 1 To 1 Step -1
    F = Left(filename, i)
    If InStr(1, dlm & List & dlm, dlm & F & dlm, vbTextCompare) > 0 Then
      Result = 2
      Exit For
    End If
  Next
End Function
Нет, я не сплю. Я просто медленно моргаю.
Stud
Сообщения: 4
Зарегистрирован: Вт апр 06, 2010 20:56

Сообщение Stud »

Большое спасибо !!! Все работает.
den114
Сообщения: 25
Зарегистрирован: Сб ноя 03, 2007 15:39

Сообщение den114 »

Готов заплатить 10 $ за плагин поиска по списку с использованием масок (фактически достаточно только использование *)
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Подробно ставь задачу. Если это то, о чем я думаю, то работы на час. Предупреждаю - скрипт PowerPro! (а $10 отдай на собачий приют ;))

ЗЫ. Думаю, Tol!k меня опередит. Ему батник нацарапать - что пирожок скушать.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

den114
За плагин - мало :) , скрипт/батник тут и бесплатно изготовят, если грамотно расписать задачу. :wink:

Кстати, оффтоп..
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

den114
Сообщения: 25
Зарегистрирован: Сб ноя 03, 2007 15:39

Сообщение den114 »

Gо моему немного не то, нужно чтобы найденные файлы из списка передавались в панель total, для дальнейшей работы с ними средствами total
den114
Сообщения: 25
Зарегистрирован: Сб ноя 03, 2007 15:39

Сообщение den114 »

Собственно подробно задачу и не распишешь,
имеется список файлов и папок вида

0001.jpg
002
0003*
*0004.jpg

Необходимо найти все папки и файлы с соответстствующими именнами в определенных местах например на диске C:\ или на D:\folder

и все найденные передать в панель total, для дальнейшей работы с ними средствами total
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Должно быть, я тупой, но я не понял, что такое
с соответстствующими именнами
Соответствующими чему? С именами, представляющими собой последовательно возрастающий номер? Тогда - сколько разрядов в числе? Иными словами - сколько нулей должно быть перед 1, 2 и т.д.?
Еще. Звездочка в твоих примерах - это произвольный набор символов? Если да, то представим себе в последнем случае:

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

* = 0001
*0004.jpg = 00010004.jpg
Как трактовать такое имя? Как первое или четвертое?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
den114
Сообщения: 25
Зарегистрирован: Сб ноя 03, 2007 15:39

Сообщение den114 »

Соответствующее строкам списка.
Ваше имя можно трактовать как четвертое.
Да, звездочка - это произвольный набор символов. При отсутствии звездочки имя считается полным

0001.jpg это полное имя

002 это полное имя

0003* имя файла с произвольным набором символов вместо *например
0003.jpg или 0003.avi или 00035568.pdf

*0004.jpg имя файла с произвольным набором символов вместо *например file0004.jpg или 4560004.avi
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

den114 писал(а):нужно чтобы найденные файлы из списка передавались в панель total, для дальнейшей работы с ними средствами total
Ну, кнопка "Файлы на панель" разве не то? Или надо автоматом?
Я могу ошибаться, но мне кажется, Tol'k указал место, где имело бы смысл об этом спрашивать, чтобы избежать оффтопа.

den114
А что понимается под списком? Файл-список? Может, тут и список не нужен, и достаточно прописи маски в одну строку через разделить( пробел, ; ) ? Да и плагин тут причём? Операция-то вроде банальная. Или я чего-то недопонимаю?
den114
Сообщения: 25
Зарегистрирован: Сб ноя 03, 2007 15:39

Сообщение den114 »

Ну как что подразумевается, в файле находится перечень файлов которые нужно найти. В каждой строке по одному файлу, имя файла прописывается либо полностью либо с маской *

Пропись масок не подходит поскольку необходимо найти множество различных файлов имя которых прописано в каждой строке файла полностью или частично.
Например

0001.jpg
0002*
file.pdf
movie.avi
Folder1
film.avi
video.mov
picture.gif

и так далее

звездочка используется нунапример если нужно найти файлы с разным расширением или же которые начинаются в данном случае на 0002.

В первое время использовал строку поиска total с вводом имен файлов через точку с запятой

Но в последнее время это не подходит в связи с ограничением строки в 1024 символа.
Ответить