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 

Пакетное создание файлов, целостность последовательности
Goto page Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
_Johm



Joined: 14 May 2006
Posts: 119

Post (Separately) Posted: Tue Dec 16, 2008 14:25    Post subject: Reply with quote

Batya
Quote:
Задача - сравнить два списка и сформировать третий, включающий элементы, существующие во втором списке, но отсутствующие в первом?

Чаще необходимо достроить список не имея полного.

Bomm
Quote:
..они выводятся "крякозябликами", какую бы кодовую страеницу не выберешь

Такая же проблема.
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Tue Dec 16, 2008 14:54    Post subject: Reply with quote

_Johm wrote:
Чаще необходимо достроить список не имея полного.

Т.е. необходимо для списка сформировать другой список, содержащий недостающие в первом списке элементы?
Если так, то сформулируй четкий критерий последовательности.
Правильно я понимаю, что это - последовательность чисел между заданными частями (начало и окончание) элементов списка (имен файлов)?
Как интерпритировать появление в списке элементов, у которых начало и/или окончание не совпадает с заданным?
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Tue Dec 16, 2008 15:48    Post subject: Reply with quote

Из того, что пока понял по задаче, слепил vbs-скрипт:
Code:
'==============================================================================
' Формирование списка отсутствующих в последовательности элементов
'==============================================================================
Option Explicit
'===== Изменяемые параметры ===================================================
Dim InFile, OutFile, Prefix, Postfix
With WScript
  InFile  = .Arguments(0)
  OutFile = .Arguments(1)
  Prefix  = .Arguments(2)
  Postfix = .Arguments(3)
End With
'==============================================================================
Dim Dic, FSO, List, l, i, m, Str, LenPrefix, LenPostfix
Set Dic = CreateObject("Scripting.Dictionary")
Set FSO = CreateObject("Scripting.FileSystemObject")

LenPrefix  = Len(Prefix)
LenPostfix = Len(Postfix)

List = FSO.OpenTextFile(InFile).ReadAll
For Each l In Split(List, vbNewLine)
  If (UCase(Left(l,  LenPrefix )) = UCase(Prefix )) And _
     (UCase(Right(l, LenPostfix)) = UCase(Postfix)) Then
    m = CInt(Mid(l, LenPrefix + 1, Len(l) - LenPrefix - LenPostfix))
    Dic.Add m, l
  End If
Next

For i = Min(Dic.Keys) To Max(Dic.Keys)
  If Not Dic.Exists(i) Then
    Str = Str & vbNewLine & prefix & i & postfix
  End If
Next

Str = Mid(Str, Len(vbNewLine) + 1)

FSO.CreateTextFile(OutFile, True).Write Str

Quit

Function Max(pArr)
  Dim lE, lM
  lM = pArr(0)
  For Each lE In pArr
    If lE > lM Then lM = lE
  Next
  Max = lM
End Function

Function Min(pArr)
  Dim lE, lM
  lM = pArr(0)
  For Each lE In pArr
    If lE < lM Then lM = lE
  Next
  Min = lM
End Function

Sub Quit
  Set Dic = Nothing
  Set FSO = Nothing
  WScript.Quit
End Sub

Скрипт запускается с четырьмя параметрами:
1 - исходный список-последовательность,
2 - выходной список-последовательность,
3 - начало элемента,
4 - окончание элемента.
Например:
Code:
"existing_files.txt" "missing_files.txt" "str _" "_ end.test"

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
_Johm



Joined: 14 May 2006
Posts: 119

Post (Separately) Posted: Tue Dec 16, 2008 17:46    Post subject: Reply with quote

Завидую я вам, скриптописатели! Спасибо, Batya, все отлично работает. Впринципе решений достаточно. Тема раскрыта.

Единственное что хотелось бы в идеале:
создание выходного списка, когда входные данные - выделенные файлы на панели. Плагин Sequences имеет подходящий алгоритм, но, как упомняналось выше, он не умеен сохранять недостающие.
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Tue Dec 16, 2008 18:12    Post subject: Reply with quote

_Johm wrote:
создание выходного списка, когда входные данные - выделенные файлы на панели.

При вызове из TC первый параметр - %L.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
_Johm



Joined: 14 May 2006
Posts: 119

Post (Separately) Posted: Tue Dec 16, 2008 19:16    Post subject: Reply with quote

Тогда надо, автоматизировать:
искать недостающие элементы в выделении с одинаковым количеством символов

выделение:
a01
a02
a04
ab55

обрабатываются только первые три

, плюс автоматом находить prefix и postfix. То есть повторить sequences...
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Tue Dec 16, 2008 19:19    Post subject: Reply with quote

_Johm wrote:
обрабатываются только первые три

А почему не последний один? Wink
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Tue Dec 16, 2008 19:31    Post subject: Reply with quote

Batya wrote:
Вообще-то, это была шутка
Вообще-то я понял. И даже попытался пошутить в ответ.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Tue Dec 16, 2008 19:38    Post subject: Reply with quote

Вахмурка wrote:
И даже попытался пошутить в ответ.

Embarassed Ну, извини Very Happy
Просто я ждал нормального описания задачи, вот и не уловил юмора.

_Johm wrote:
a01
a02
a04
ab55

А если так:
Code:
a5
a02
a04
a555
ab55
ab75
ac85

Как определить приставку и окончание?
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
_Johm



Joined: 14 May 2006
Posts: 119

Post (Separately) Posted: Tue Dec 16, 2008 19:39    Post subject: Reply with quote

Batya wrote:
_Johm писал(а):
обрабатываются только первые три

А почему не последний один?


Аааа, потомучто, если бы надо было последний и далее, то выделять надо с другого места.

Это необходимо, чтобы расчеты были проще и с сильно отличающимися группами не началась лавинная генерация "пропущенных".
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Tue Dec 16, 2008 19:41    Post subject: Reply with quote

_Johm
Т.е. базовые части надо определять по первому элементу?
А количество цифр в числовых последовательностях всегда одинаковое?
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
_Johm



Joined: 14 May 2006
Posts: 119

Post (Separately) Posted: Tue Dec 16, 2008 19:50    Post subject: Reply with quote

Batya wrote:
А если так:Код:
a5
a02
a04
a555
ab55
ab75
ac85


То, пусть и будет так: ничего не попадет в выходной файл, так как тук и так видно сколько всего, необходимость возникает, когда много однотипных файлов.

PS согласен, конечно, что задачу надо ставить исчерпывающе, но, Batya, любишь вытащить истину из "где-то рядом" поближе.
Back to top
View user's profile Send private message
_Johm



Joined: 14 May 2006
Posts: 119

Post (Separately) Posted: Tue Dec 16, 2008 19:59    Post subject: Reply with quote

Batya wrote:
А количество цифр в числовых последовательностях всегда одинаковое?

Вот тут не знаю. Может быть и разное.

a01
..
a99
a100

может быть и так
--------------------
следующее сообщение от Tol!k
решает проблему с некоректным
отображением русских букв в
окне cmd.exe
||
\/


Last edited by _Johm on Wed Dec 17, 2008 10:37; edited 1 time in total
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Tue Dec 16, 2008 22:46    Post subject: Reply with quote

Я вас перебью (с)
_Johm wrote:
Bomm
Quote:
..они выводятся "крякозябликами", какую бы кодовую страеницу не выберешь
Такая же проблема.

Какой шрифт у вас в ДОС-окне?
Если "Terminal", то в умолчаниях для cmd.exe смените шрифт на "Lucida Console".
В шрифте "Terminal" нет кодовой страницы 1251
Back to top
View user's profile Send private message
Bomm



Joined: 15 Jan 2005
Posts: 245
Location: Москва

Post (Separately) Posted: Wed Dec 17, 2008 11:11    Post subject: Reply with quote

Quote:
Какой шрифт у вас в ДОС-окне?

Спасибо, дошло Embarassed
_________________
Юрий Бомштейн
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 Previous  1, 2, 3  Next
Page 2 of 3

 
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