View previous topic :: View next topic |
Author |
Message |
sergiokapone
Joined: 18 Nov 2009 Posts: 99
|
(Separately) Posted: Fri Jun 10, 2011 23:02 Post subject: Пакетная обработка картинок |
|
|
Есть батник
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 |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Sat Jun 11, 2011 10:39 Post subject: |
|
|
sergiokapone wrote: | Т.е., например, имеется папка с файлами foreground0001.tif ... foreground1000.tif , нужно перегнать по вышеприведенной схеме файлы в demo0001.djvu ... demo1000.djvu |
Я абсолютно не в курсе, как работают описанные утилиты (мне это не требуется), но где в приведённом примере файлы background*.tif? Они не будут использоваться? _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
sergiokapone
Joined: 18 Nov 2009 Posts: 99
|
(Separately) Posted: Sat Jun 11, 2011 12:14 Post subject: |
|
|
Batya wrote: | но где в приведённом примере файлы background*.tif? Они не будут использоваться? |
Извините, просто забыл написать, они тоже должны лежать в той же папке, что и foreground*.tif |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Sat Jun 11, 2011 12:27 Post subject: |
|
|
sergiokapone
Соответственно, все описанные файлы группируются по номерам после базовых имён "foreground", "background" и "demo"? _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
sergiokapone
Joined: 18 Nov 2009 Posts: 99
|
(Separately) Posted: Sat Jun 11, 2011 12:45 Post subject: |
|
|
Да, верно. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Sat Jun 11, 2011 14:21 Post subject: |
|
|
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 |
|
|
sergiokapone
Joined: 18 Nov 2009 Posts: 99
|
(Separately) Posted: Sat Jun 11, 2011 14:39 Post subject: |
|
|
Спасибо, за помощь. У меня пока не получилось, т.е. на выходе djvu не создался, но сообщений об ошибках тоже не выдает. Сам пакет утилит можно взять с этой страницы (Пакет утилит для работы метода разделённых сканов (474 КБ) (На базе csepdjvu и NetPBM-утилит)), там же я и увидел этот батник. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Sun Jun 12, 2011 01:15 Post subject: |
|
|
sergiokapone wrote: | У меня пока не получилось, т.е. на выходе djvu не создался, но сообщений об ошибках тоже не выдает. |
Нашёл ошибку в скрипте - в 76-ой строке должно быть
Исправил. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
sergiokapone
Joined: 18 Nov 2009 Posts: 99
|
(Separately) Posted: Thu Jun 16, 2011 23:23 Post subject: |
|
|
Спасибо, работает |
|
Back to top |
|
|
|
|
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
|