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 

Пакетная обработка картинок

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
sergiokapone



Joined: 18 Nov 2009
Posts: 99

Post (Separately) Posted: Fri Jun 10, 2011 23:02    Post subject: Пакетная обработка картинок Reply with quote

Есть батник
Code:

tifftopnm foreground.tif | pnmtodjvurle > foreground.rle
tifftopnm background.tif > background.ppm
copy /b foreground.rle+background.ppm output.sep
csepdjvu output.sep demo.djvu
pause


который обрабатывает утилитами tifftopnm, pnmtodjvurle и csepdjvu исходные файлы foreground.tif и background.tif в один файл demo.djvu. Как написать скрипт для пакетной обработки файлов в TC, которые находятся в определенной папке? Т.е., например, имеется папка с файлами foreground0001.tif ... foreground1000.tif , background0001.tif ... background1000.tif нужно перегнать по вышеприведенной схеме файлы в demo0001.djvu ... demo1000.djvu


Last edited by sergiokapone on Sat Jun 11, 2011 12:19; edited 2 times in total
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Sat Jun 11, 2011 10:39    Post subject: Reply with quote

sergiokapone wrote:
Т.е., например, имеется папка с файлами foreground0001.tif ... foreground1000.tif , нужно перегнать по вышеприведенной схеме файлы в demo0001.djvu ... demo1000.djvu

Я абсолютно не в курсе, как работают описанные утилиты (мне это не требуется), но где в приведённом примере файлы background*.tif? Они не будут использоваться?
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
sergiokapone



Joined: 18 Nov 2009
Posts: 99

Post (Separately) Posted: Sat Jun 11, 2011 12:14    Post subject: Reply with quote

Batya wrote:
но где в приведённом примере файлы background*.tif? Они не будут использоваться?


Извините, просто забыл написать, они тоже должны лежать в той же папке, что и foreground*.tif
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Sat Jun 11, 2011 12:27    Post subject: Reply with quote

sergiokapone
Соответственно, все описанные файлы группируются по номерам после базовых имён "foreground", "background" и "demo"?
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
sergiokapone



Joined: 18 Nov 2009
Posts: 99

Post (Separately) Posted: Sat Jun 11, 2011 12:45    Post subject: Reply with quote

Да, верно.
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Sat Jun 11, 2011 14:21    Post subject: Reply with quote

sergiokapone
Т.к., ещё раз повторю, указанных выше утилит у меня нет, приводимый vbs-скрипт мной не тетировался. Пиши об ошибках.
Скрипт работает по выделенным файлам или папкам или по текущим под курсором. Имена можно задать через параметры или будут использоваться значения по-умолчанию.
Code:
'=====================================================================
' Пакетное формирование djvu-файлов
'
' Параметры:
' {файл-список} [{целевое имя файла} [{имя файла 1} [{имя файла 2}]]]
'
' Примеры параметров при вызове из TC:
' %L
' %L "demo"
' %L "demo" "foreground" "background"
'=====================================================================
Option Explicit
'======== Изменяемые параметры =======================================
Const Util1         = "tifftopnm"
Const Util2         = "pnmtodjvurle"
Const Util3         = "csepdjvu"
Const DefBaseName1  = "foreground"
Const DefBaseName2  = "background"
Const DefTargetName = "demo"
Const BaseExt1      = "tif"
Const BaseExt2      = "tif"
Const TargetExt     = "djvu"
Const TransitFile1  = "foreground.rle"
Const TransitFile2  = "background.ppm"
Const TransitFile3  = "output.sep"
'=====================================================================
Dim FSO, WSH, FF, F, BaseName1, BaseName2, TargetName

With WScript
  If .Arguments.Count = 0 Then
    MsgBox "Не заданы параметры!", vbOKOnly + vbCritical, "Пакетное формирование djvu-файлов"
    .Quit
  End If
  FF = .Arguments(0)
  If .Arguments.Count > 1 Then
    TargetName = .Arguments(1)
    If TargetName = "" Then TargetName = DefTargetName
  Else
    TargetName = DefTargetName
  End If
  If .Arguments.Count > 2 Then
    BaseName1 = .Arguments(2)
    If BaseName1 = "" Then BaseName1 = DefBaseName1
  Else
    BaseName1 = DefBaseName1
  End If
  If .Arguments.Count > 3 Then
    BaseName2 = .Arguments(3)
    If BaseName2 = "" Then BaseName2 = DefBaseName2
  Else
    BaseName2 = DefBaseName2
  End If
End With

Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")

With FSO.OpenTextFile(FF, 1)
  Do While Not .AtEndOfStream
    F = Trim(.ReadLine)
    If F <> "" Then
      If FSO.FolderExists(F) Then ForFolder FSO.GetFolder(F)
      If FSO.FileExists(F)   Then ForFile   FSO.GetFile(F)
    End If
  Loop
  .Close
End With

Set FSO = Nothing
Set WSH = Nothing
WScript.Quit

Sub ForFile(pFile)
  Dim lAdd, lFile1, lFile2
  If InStr(1, pFile.Name, BaseName1, 1) = 1 And LCase(FSO.GetExtensionName(pFile.Name)) = BaseExt1 Then
    lAdd   = Mid(FSO.GetBaseName(pFile.Name), Len(BaseName1) + 1)
    lFile1 = BaseName2  & lAdd & "." & BaseExt2
    lFile2 = TargetName & lAdd & "." & TargetExt
    If FSO.FileExists(pFile.ParentFolder.Path & "\" & lFile1) Then
      WSH.Run "cmd /c " & Util1 & " " & pFile.Name & " | " & Util2  & " > " & TransitFile1, 7, True
      WSH.Run "cmd /c " & Util1 & " " & lFile1                      & " > " & TransitFile2, 7, True
      WSH.Run "cmd /c copy /b " & TransitFile1 & "+" & TransitFile2 &   " " & TransitFile3, 7, True
      WSH.Run "cmd /c " & Util3 & " " & TransitFile3 & " " & lFile2                       , 7, True
    End If
  End If
End Sub

Sub ForFolder(pFolder)
  Dim lF
  For Each lF In pFolder.Files
    ForFile lF
  Next
  For Each lF In pFolder.SubFolders
    ForFolder lF
  Next
End Sub

_________________
Нет, я не сплю. Я просто медленно моргаю.


Last edited by Batya on Sun Jun 12, 2011 01:13; edited 1 time in total
Back to top
View user's profile Send private message
sergiokapone



Joined: 18 Nov 2009
Posts: 99

Post (Separately) Posted: Sat Jun 11, 2011 14:39    Post subject: Reply with quote

Спасибо, за помощь. У меня пока не получилось, т.е. на выходе djvu не создался, но сообщений об ошибках тоже не выдает. Сам пакет утилит можно взять с этой страницы (Пакет утилит для работы метода разделённых сканов (474 КБ) (На базе csepdjvu и NetPBM-утилит)), там же я и увидел этот батник.
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Sun Jun 12, 2011 01:15    Post subject: Reply with quote

sergiokapone wrote:
У меня пока не получилось, т.е. на выходе djvu не создался, но сообщений об ошибках тоже не выдает.

Нашёл ошибку в скрипте - в 76-ой строке должно быть
Code:
Len(BaseName1) + 1

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



Joined: 18 Nov 2009
Posts: 99

Post (Separately) Posted: Thu Jun 16, 2011 23:23    Post subject: Reply with quote

Спасибо, работает
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
Page 1 of 1

 
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