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

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

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

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

Сообщение Batya »

gegabit писал(а):Хочу знать каких файлов нет. (т.е. чтобы результат был тех файлов, которых нет)
TC не сможет показать отсутствующие файлы.
Как вариант - создать еще один файл-список.
Нет, я не сплю. Я просто медленно моргаю.
Koljasik
Сообщения: 59
Зарегистрирован: Вт ноя 13, 2007 00:40
Откуда: СПб

Сообщение Koljasik »

Batya, спасибо, все замечательно работает!
Аватара пользователя
gegabit
Сообщения: 133
Зарегистрирован: Пт окт 20, 2006 15:35
Откуда: дети берутся?

Сообщение gegabit »

Ну если возможно сформировать по результатам проверки отсутствующие файлы в отдельном файл-списке, было бы замечательно!
Единственный недостаток водки - недостаток водки!
Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Сообщение Моторокер »

Раз уж про автоматизацию заговорили, перенёс.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

gegabit писал(а):Ну если возможно сформировать по результатам проверки отсутствующие файлы в отдельном файл-списке, было бы замечательно!

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

'=========================================================================
' Проверка существования файлов\папок, представленных в файле-списке.
' Результат действия скрипта - формируемся итоговый файл-список
'   с отсутствующими файлами\папками
'
' Параметры:
' {исходный файл-список} {итоговый файл-список}
'
' Автор - Batya
'=========================================================================
Option Explicit
'======== Изменяемые параметры ===========================================
Const FolderCheck = True  'Проверять ли папки
Const FileCheck   = True  'Проверять ли файлы
Const Existing    = False 'Что помещать в итоговый файл
'=========================================================================
Dim Mess, FSO, WSH, FF1, FF2, F, TFL, List
SetMess
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
CheckParam

For Each F In Split(FSO.OpenTextFile(FF1).ReadAll, vbNewLine)
  If F <> "" Then
    F = GetPath(F)
    If ExistsCheck(F) Then List = List & vbNewLine & F
  End If
Next
If List <> "" Then List = Mid(List, Len(vbNewLine) + 1)
On Error Resume Next
Set TFL = FSO.CreateTextFile(FF2, True)
If Err.Number <> 0 Then
  MessBox Mess(5) & vbNewLine & Err.Description, 1
  Err.Clear
  Quit
End If
TFL.Write List
If Err.Number <> 0 Then
  MessBox Mess(5) & vbNewLine & Err.Description, 1
  Err.Clear
  Quit
End If
On Error GoTo 0

MessBox Mess(4), 3
Quit

Sub SetMess
  Set Mess = CreateObject("Scripting.Dictionary")
  With Mess
    .Add 0,  "Проверка существования файлов\папок"
    .Add 1,  "Не указаны параметры!"
    .Add 2,  "Первый параметр не является файлом-списком!"
    .Add 3,  "Не указан итоговый файл-список!"
    .Add 4,  "Операция завершена."
    .Add 5,  "Операция прервана по причине ошибки:"
  End With
End Sub

Sub CheckParam
  If WScript.Arguments.Count = 0 Then
    MessBox Mess(1), 1
    Quit
  End If
  FF1 = GetPath(WScript.Arguments(0))
  If Not FSO.FileExists(FF1) Then
    MessBox Mess(2), 1
    Quit
  End If
  If WScript.Arguments.Count = 1 Then
    MessBox Mess(3), 1
    Quit
  End If
  FF2 = GetPath(WScript.Arguments(1))
End Sub

Function GetPath(pPath)
  GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function

Function ExistsCheck(pPath)
  If FolderCheck And (Not FSO.FileExists(pPath)) And (Not (Existing Xor FSO.FolderExists(pPath))) Then
    ExistsCheck = True
    Exit Function
  End If
  If FileCheck And (Not FSO.FolderExists(pPath)) And (Not (Existing Xor FSO.FileExists(pPath))) Then
    ExistsCheck = True
    Exit Function
  End If
  ExistsCheck = False
End Function

Function MessBox(pMess, pMode)
  Dim lIcon
  Select Case pMode
    Case 1 lIcon = vbCritical    + vbOKOnly
    Case 2 lIcon = vbExclamation + vbOKOnly
    Case 3 lIcon = vbInformation + vbOKOnly
  End Select
  MessBox = MsgBox(pMess, lIcon, Mess(0))
End Function

Sub Quit
  Set Mess = Nothing
  Set WSH  = Nothing
  Set TFL  = Nothing
  Set FSO  = Nothing
  WScript.Quit
End Sub
Последний раз редактировалось Batya Пт май 08, 2009 15:33, всего редактировалось 1 раз.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
gegabit
Сообщения: 133
Зарегистрирован: Пт окт 20, 2006 15:35
Откуда: дети берутся?

Сообщение gegabit »

Огромное спасибо Батя!
6901 файл просканено, 125 не было... =)

Кнопка для тотала:

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

TOTALCMD#BAR#DATA
c:\111\script.vbs
"C:\111\FileList.txt" "C:\111\nofiles.txt"
C:\Program Files\Total Commander\TOTALCMD.EXE,21
Поиск несуществующих файлов
c:\
-1
-1
Единственный недостаток водки - недостаток водки!
Koljasik
Сообщения: 59
Зарегистрирован: Вт ноя 13, 2007 00:40
Откуда: СПб

Сообщение Koljasik »

Batya, замечательно!
Но тут, я так понимаю, файлы-параметры уже через %commander_path% не задать?
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Koljasik писал(а):Но тут, я так понимаю, файлы-параметры уже через %commander_path% не задать?
А что мешает?
Только надо учесть, что если параметры указывать в поле "Параметры" кнопки\команды, то вместо одного % надо писать дважды - %%, т.е. "%%commander_path%%".
Нет, я не сплю. Я просто медленно моргаю.
Koljasik
Сообщения: 59
Зарегистрирован: Вт ноя 13, 2007 00:40
Откуда: СПб

Сообщение Koljasik »

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

Сообщение Batya »

Koljasik
Покажи кнопку.
Нет, я не сплю. Я просто медленно моргаю.
Koljasik
Сообщения: 59
Зарегистрирован: Вт ноя 13, 2007 00:40
Откуда: СПб

Сообщение Koljasik »

Вот так все работает:

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

TOTALCMD#BAR#DATA
%commander_path%\Plugins\scripts\find.vbs
c:\totalcmd\temp\FileList.txt c:\totalcmd\temp\nofiles.txt
%commander_path%\TOTALCMD.EXE,18
Поиск несуществующих файлов
%commander_path%\Plugins\scripts\

-1
Заменить c:\totalcmd не удается...
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Koljasik
Подредактировал скрипт.
Проверь, так работает?
Нет, я не сплю. Я просто медленно моргаю.
Koljasik
Сообщения: 59
Зарегистрирован: Вт ноя 13, 2007 00:40
Откуда: СПб

Сообщение Koljasik »

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

Сообщение Stud »

Batya писал(а): Если нужен поиск по списку, то используем Script Content Plugin.
Подскажите, поиск по списку работает только, если в списке указано полное имя файла с расширением.
Как сделать, чтобы поиск был без расширения?

Пример: файл- 123456-20.jpg , а в списке надо- 12345.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Stud
А если в списке "1", то для файла "123456-20.jpg" возвращать признак "Найдено"?
Нет, я не сплю. Я просто медленно моргаю.
Ответить