Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Надо найти 40 файлов и удалить!
Goto page 1, 2, 3, 4, 5, 6, 7, 8, 9  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
activeman



Joined: 07 Mar 2007
Posts: 69

Post (Separately) Posted: Tue Jun 03, 2008 13:46    Post subject: Надо найти 40 файлов и удалить! Reply with quote

Задача такая:

Есть 3 раздела, на них в разных папках размещены фильмы.
Надо найти определоённые из списка, 40шт, и снести, бо они дубли.

КАК это всё сделать!?

Вопрос оч. для меня важный, т.к. поиск по списку - это то, чем я давно мечтаю овладеть!

 !  Моторокер:
Форум советы – для советов.
Для вопросов есть Общий форум.
Back to top
View user's profile Send private message
Моторокер



Joined: 06 May 2005
Posts: 1477
Location: г. Пермь (читается Перьмь)

Post (Separately) Posted: Tue Jun 03, 2008 15:41    Post subject: Reply with quote

Total Commander умеет искать дубликаты как по содержимому, так и по названию.

Для поиска по списку можно попробовать преобразовать его в формат:
*первоекино* *второекино*
и искать файлы так.
_________________
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Back to top
View user's profile Send private message
swr



Joined: 07 Jun 2007
Posts: 39

Post (Separately) Posted: Tue Jun 03, 2008 18:14    Post subject: Reply with quote

Вообще то очень интерестная ситуация, неужели никто так и не написал скрипт для поиска по списку? Судя по всему нет, здесь ещё где то темка про это была "Удаление mp3 по черному списку исполнителей" называлась, но там тоже вариант не идеальный, в общем тухляк Sad, тоже хотелось бы такую фичу.
Back to top
View user's profile Send private message
gegabit



Joined: 20 Oct 2006
Posts: 133
Location: дети берутся?

Post (Separately) Posted: Wed Jun 04, 2008 12:10    Post subject: Reply with quote

CTRL+B, весь список, смотри дубли и стирай.
_________________
Единственный недостаток водки - недостаток водки!
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2190
Location: Москва, Россия

Post (Separately) Posted: Wed Jun 04, 2008 14:36    Post subject: Reply with quote

Вообщем, надо "отделить мух от котлет".
Если нужно искать дубликаты - это одно. См. советы выше.

Если нужен поиск по списку, то используем Script Content Plugin.
Содержимое script.ini:
Code:
[Script]
Section=General

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

В каталоге плагина должен лежать файл General.vbs с содержимым:
Code:
'============================
' Колонка Result будет возвращать признак наличия файла\каталога в указанном файле-списке:
'   0 - файл\каталог НЕ найден; 1 - файл\каталог найден
'=== Изменяемые параметры ===
Const FileList = "C:\FileList.txt" 'Файл-список
'============================

Dim FSO, List, QuitFlag
Const ForReading = 1
Set FSO = CreateObject("Scripting.FileSystemObject")

QuitFlag = False
content  = 0

If Not FSO.FileExists(FileList) Then
  Quit
End If

If Not QuitFlag Then
  On Error Resume Next
  List = FSO.OpenTextFile(FileList, ForReading, False).ReadAll
  If Err.Number <> 0 Then
    Quit
  End If
  On Error GoTo 0
End If

If Not QuitFlag Then
  If InStr(1, vbNewLine & List & vbNewLine, vbNewLine & filename & vbNewLine, vbTextCompare) > 0 Then
    content = 1
  End If
End If

Quit

Sub Quit
  QuitFlag = True
  Set FSO  = Nothing
End Sub
Здесь константе FileList надо присвоить значение полного пути к файлу-списку.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
activeman



Joined: 07 Mar 2007
Posts: 69

Post (Separately) Posted: Wed Jun 04, 2008 17:44    Post subject: Reply with quote

УважаемыйBatya!

Боюсь я ничего не понял!

Что мне с этим добром делать!?

По пунктам? если можно!?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2190
Location: Москва, Россия

Post (Separately) Posted: Wed Jun 04, 2008 18:12    Post subject: Reply with quote

activeman wrote:
Что мне с этим добром делать!?

По пунктам? если можно!?

1. Скопировать архив плагина Script Content Plugin - ссылка выше -> Скачать.
2. Установить плагин (читай справку TC - "Тематические обзоры\Плагины и языки", раздел "Как установить плагин") .
3. В папке установленного плагина открыть на редактирование файл script.ini. Заменить его содержимое приведенным выше текстом.
4. В папке установленного плагина создать текстовый файл General.vbs с приведенным выше текстом.
5. Создать файл "C:\FileList.txt" со списком файлов (твои "40шт"). Имя и размещение этого файла-списка может быть любым, но тогда в файле General.vbs необходимо соответствующим образом изменить строку
Code:
Const FileList = "C:\FileList.txt" 'Файл-список

6. Запустить поиск (Alt+F7).
7. Перейти на закладку "Плагины".
8. Установить галочку "Поиск с плагинами".
9. В поле "Плагин:" выбрать "script".
10. Поле "Свойство:" = "Result".
11. "Операция:" = "содержит".
12. "Значение:" = "1".
13. Нажать "Начать поиск".
14. Радоваться найденным файлам.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
gegabit



Joined: 20 Oct 2006
Posts: 133
Location: дети берутся?

Post (Separately) Posted: Thu Apr 23, 2009 19:31    Post subject: Reply with quote

Батя, а если такая формулировка:
У меня есть список файлов в расшаренной папке вида:
\\docs\db_files\01\45677.pdf
\\docs\db_files\01\45678.pdf
\\docs\db_files\02\45688.pdf
..........

Список большой, более 3к файлов.
Я знаю что в этом списке существуют не все файлы, а некоторые удалены.
Хочу знать каких файлов нет. (т.е. чтобы результат был тех файлов, которых нет)
Не поможешь с скриптом?
_________________
Единственный недостаток водки - недостаток водки!
Back to top
View user's profile Send private message
Bishop



Joined: 15 May 2007
Posts: 98

Post (Separately) Posted: Thu Apr 23, 2009 20:04    Post subject: Reply with quote

gegabit,

Скрипты для PowerShell.

Получение файлов, которые есть в списке, но нет на диске:
Code:
gc list | ? {-not (test-path $_)}

Получение файлов, которых нет в списке, а есть на диске:
Code:
$list = gc list
dir \\server\share | ? {$list -notcontains $_.fullname}
Back to top
View user's profile Send private message
Koljasik



Joined: 13 Nov 2007
Posts: 59
Location: СПб

Post (Separately) Posted: Thu Apr 23, 2009 23:12    Post subject: Reply with quote

Batya, а через %commander_path% можно как-нибудь организовать задание файла-списка?
Back to top
View user's profile Send private message
Dimych



Joined: 01 Feb 2006
Posts: 27

Post (Separately) Posted: Sat Apr 25, 2009 16:44    Post subject: Reply with quote

Koljasik wrote:
а через %commander_path% можно как-нибудь


Например.
1. Заменить начало кода Batya
с
Code:

'============================
' Колонка Result будет возвращать признак наличия файла\каталога в указанном файле-списке:
'   0 - файл\каталог НЕ найден; 1 - файл\каталог найден
'=== Изменяемые параметры ===
Const FileList = "C:\FileList.txt" 'Файл-список
'============================

Dim FSO, List, QuitFlag
Const ForReading = 1
Set FSO = CreateObject("Scripting.FileSystemObject")

на
Code:

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

Dim FSO, List, QuitFlag, FileList
Const ForReading = 1
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")

' Файл-список
FileList="%commander_path%\FileList.txt"

' Замена любых переменных окружения, заданных в FileList
FileList = strReplaceEnveroumentString(FileList)


и 2. Заменить конец кода Batya
с
Code:

Sub Quit
  QuitFlag = True
  Set FSO  = Nothing
End Sub

на
Code:

Sub Quit
  QuitFlag = True
  Set FSO  = Nothing
  Set WSHShell  = Nothing
End Sub

Function strReplaceEnveroumentString(byVal strSource)
' Замена всех переменных окружения в строке strSource на их значение
Dim strFields, intSizeFields, intI, strTarget
strTarget = ""
If strSource <> "" Then
    strFields = Split(strSource,"%")
    intSizeFields = UBound(strFields)
    strTarget=strFields(0)
    For intI = 1 To intSizeFields Step 2
        strTarget = strTarget & WshShell.ExpandEnvironmentStrings("%" & strFields(intI) & "%")
        If intI + 1 <= intSizeFields Then strTarget = strTarget & strFields(intI + 1)
    Next
End If
strReplaceEnveroumentString = strTarget
End Function


Теперь можно в FileList задавать любые переменные окружение, а не только %commander_path%.[/b]
Back to top
View user's profile Send private message
Bishop



Joined: 15 May 2007
Posts: 98

Post (Separately) Posted: Sat Apr 25, 2009 17:27    Post subject: Reply with quote

Dimych
функция strReplaceEnveroumentString абсолютно бесполезна, WshShell.ExpandEnvironmentStrings и так заменяет в переданной строке все вхождения переменных окружения на их значения, и вычленять их и преобразовывать по одной нет смысла.

В начале достаточно:
Code:
FileList = WshShell.ExpandEnvironmentStrings(FileList)
Back to top
View user's profile Send private message
Dimych



Joined: 01 Feb 2006
Posts: 27

Post (Separately) Posted: Sat Apr 25, 2009 17:50    Post subject: Reply with quote

И то правда. Не проверил.. Smile
Back to top
View user's profile Send private message
Koljasik



Joined: 13 Nov 2007
Posts: 59
Location: СПб

Post (Separately) Posted: Sun Apr 26, 2009 08:24    Post subject: Reply with quote

Dimych, Bishop,
не работает.
Если сделать набор колонок, то и при первом и втором варианте пишет в графе result "Требуется объект: WScript"
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2190
Location: Москва, Россия

Post (Separately) Posted: Sun Apr 26, 2009 14:10    Post subject: Reply with quote

Koljasik wrote:
не работает.
Если сделать набор колонок, то и при первом и втором варианте пишет в графе result "Требуется объект: WScript"

В Script Content Plugin нельзя обращаться к объекту WScript, т.е. нужно так:
Code:
Set WSHShell = CreateObject("WScript.Shell")

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3, 4, 5, 6, 7, 8, 9  Next
Page 1 of 9

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group