Выявление пробелов в последовательности файлов

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

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

Ответить
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Выявление пробелов в последовательности файлов

Сообщение cojoc »

Помогите пожалуйста со скриптом, который показывал бы, каких имён не достаёт в закономерной последовательности в именах файлов.
Пример:
0.jpg
1.jpg
2.jpg
4.jpg
6.jpg

Результат работы скрипта (желательно сохранённый в текстовом файле):
3.jpg
5.jpg

Понимаю, что закономерность может быть сложной, мне достаточно только самой простой с числами. У меня есть много отдельных страниц книги по одной (>600), хотелось бы узнать все ли страницы есть.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Файлы выбираются или нет?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Сообщение cojoc »

Из выделенных файлов.
Возможно это слишком объёмный труд для скрипта.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

cojoc
Я предлагаю установку курсора на последнем файле.
А зачем тут файл с именами? Не лучше просто номера собрать через запятую или пробел?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Сообщение cojoc »

В файл потому что их может быть много - всех не запомнить и чтобы потом можно было вернуться к списку недостающих.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Так пойдёт?

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

'===================================================
' Найти отсутствующие файлы по нумерации №.ext
' при установке курсора на файле с последним номером

' Условие: путь запуска - пустой
' Параметр: %N
'===================================================
CD = CreateObject("WScript.Shell").CurrentDirectory
List = "List.txt" : F = WScript.Arguments(0)
With CreateObject("Scripting.FileSystemObject")
  Ext = .GetExtensionName(F)
  For i = 0 to .GetBaseName(F)
    Name = i & "." & Ext
    If Not .FileExists(Name) Then S = S & vbNewLine & Name
  Next : .CreateTextFile(List,1,True).Write Mid(S, 3)
End With : CreateObject("Shell.Application").Open(CD & "\" & List)
Последний раз редактировалось Flasher Чт апр 02, 2015 16:22, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

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

Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
cojoc
Сообщения: 144
Зарегистрирован: Пт сен 04, 2009 16:53

Сообщение cojoc »

Flasher
Супер! Спасибо большое Flasher, работает шустро :)
Вахмурка Спасибо за альтернативу.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Попытка уместить в кнопку:

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

TOTALCMD#BAR#DATA
%comspec% /c del Список.txt & for /L %# in (1,1,
100 ) do if not exist %%#.jpg echo %%#.jpg>> Список.txt
WCMICONS.DLL,79
Список пропущенных среди 100 страниц

1
-1
Если число страниц требуется менять часто, можно вместо числа страниц поставить знак вопроса и вводить его каждый раз при вызове кнопки (нажать HOME, число и ENTER).
Для проверки, начиная с нулевой страницы, надо in (1 на in (0 заменить.
Ответить