View previous topic :: View next topic |
Author |
Message |
activeman
Joined: 07 Mar 2007 Posts: 69
|
(Separately) Posted: Tue Jun 03, 2008 13:46 Post subject: Надо найти 40 файлов и удалить! |
|
|
Задача такая:
Есть 3 раздела, на них в разных папках размещены фильмы.
Надо найти определоённые из списка, 40шт, и снести, бо они дубли.
КАК это всё сделать!?
Вопрос оч. для меня важный, т.к. поиск по списку - это то, чем я давно мечтаю овладеть!
! | Моторокер: | Форум советы – для советов.
Для вопросов есть Общий форум. | |
|
Back to top |
|
|
Моторокер
Joined: 06 May 2005 Posts: 1517 Location: г. Пермь (читается Перьмь)
|
(Separately) Posted: Tue Jun 03, 2008 15:41 Post subject: |
|
|
Total Commander умеет искать дубликаты как по содержимому, так и по названию.
Для поиска по списку можно попробовать преобразовать его в формат:
*первоекино* *второекино*
и искать файлы так. _________________ плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми |
|
Back to top |
|
|
swr
Joined: 07 Jun 2007 Posts: 59
|
(Separately) Posted: Tue Jun 03, 2008 18:14 Post subject: |
|
|
Вообще то очень интерестная ситуация, неужели никто так и не написал скрипт для поиска по списку? Судя по всему нет, здесь ещё где то темка про это была "Удаление mp3 по черному списку исполнителей" называлась, но там тоже вариант не идеальный, в общем тухляк , тоже хотелось бы такую фичу. |
|
Back to top |
|
|
gegabit
Joined: 20 Oct 2006 Posts: 133 Location: дети берутся?
|
(Separately) Posted: Wed Jun 04, 2008 12:10 Post subject: |
|
|
CTRL+B, весь список, смотри дубли и стирай. _________________ Единственный недостаток водки - недостаток водки! |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Wed Jun 04, 2008 14:36 Post subject: |
|
|
Вообщем, надо "отделить мух от котлет".
Если нужно искать дубликаты - это одно. См. советы выше.
Если нужен поиск по списку, то используем 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 |
|
|
activeman
Joined: 07 Mar 2007 Posts: 69
|
(Separately) Posted: Wed Jun 04, 2008 17:44 Post subject: |
|
|
УважаемыйBatya!
Боюсь я ничего не понял!
Что мне с этим добром делать!?
По пунктам? если можно!? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Wed Jun 04, 2008 18:12 Post subject: |
|
|
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 |
|
|
gegabit
Joined: 20 Oct 2006 Posts: 133 Location: дети берутся?
|
(Separately) Posted: Thu Apr 23, 2009 19:31 Post subject: |
|
|
Батя, а если такая формулировка:
У меня есть список файлов в расшаренной папке вида:
\\docs\db_files\01\45677.pdf
\\docs\db_files\01\45678.pdf
\\docs\db_files\02\45688.pdf
..........
Список большой, более 3к файлов.
Я знаю что в этом списке существуют не все файлы, а некоторые удалены.
Хочу знать каких файлов нет. (т.е. чтобы результат был тех файлов, которых нет)
Не поможешь с скриптом? _________________ Единственный недостаток водки - недостаток водки! |
|
Back to top |
|
|
Bishop
Joined: 15 May 2007 Posts: 98
|
(Separately) Posted: Thu Apr 23, 2009 20:04 Post subject: |
|
|
gegabit,
Скрипты для PowerShell.
Получение файлов, которые есть в списке, но нет на диске:
Code: | gc list | ? {-not (test-path $_)} |
Получение файлов, которых нет в списке, а есть на диске:
Code: | $list = gc list
dir \\server\share | ? {$list -notcontains $_.fullname} |
|
|
Back to top |
|
|
Koljasik
Joined: 13 Nov 2007 Posts: 59 Location: СПб
|
(Separately) Posted: Thu Apr 23, 2009 23:12 Post subject: |
|
|
Batya, а через %commander_path% можно как-нибудь организовать задание файла-списка? |
|
Back to top |
|
|
Dimych
Joined: 01 Feb 2006 Posts: 27
|
(Separately) Posted: Sat Apr 25, 2009 16:44 Post subject: |
|
|
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 |
|
|
Bishop
Joined: 15 May 2007 Posts: 98
|
(Separately) Posted: Sat Apr 25, 2009 17:27 Post subject: |
|
|
Dimych
функция strReplaceEnveroumentString абсолютно бесполезна, WshShell.ExpandEnvironmentStrings и так заменяет в переданной строке все вхождения переменных окружения на их значения, и вычленять их и преобразовывать по одной нет смысла.
В начале достаточно:
Code: | FileList = WshShell.ExpandEnvironmentStrings(FileList) |
|
|
Back to top |
|
|
Dimych
Joined: 01 Feb 2006 Posts: 27
|
(Separately) Posted: Sat Apr 25, 2009 17:50 Post subject: |
|
|
И то правда. Не проверил.. |
|
Back to top |
|
|
Koljasik
Joined: 13 Nov 2007 Posts: 59 Location: СПб
|
(Separately) Posted: Sun Apr 26, 2009 08:24 Post subject: |
|
|
Dimych, Bishop,
не работает.
Если сделать набор колонок, то и при первом и втором варианте пишет в графе result "Требуется объект: WScript" |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2220 Location: Москва, Россия
|
(Separately) Posted: Sun Apr 26, 2009 14:10 Post subject: |
|
|
Koljasik wrote: | не работает.
Если сделать набор колонок, то и при первом и втором варианте пишет в графе result "Требуется объект: WScript" |
В Script Content Plugin нельзя обращаться к объекту WScript, т.е. нужно так: Code: | Set WSHShell = CreateObject("WScript.Shell") |
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
|