2013-10-29 108 views
1

喂我的名字是丹尼斯和我有以下目录IMAGES\如何用图像目录的名称创建文本文件?

EX0010040324303-001.tif 
EX0010040324303-002.tif 
EX0010040324303-003.tif 
EX0020943843934-001.tif 
EX0020943843934-002.tif 
EX0030673452099-001.tif 
EX0030673452099-002.tif 

我想要什么?

通过目录和 环路编译一个文本文件如下:

EX0010040324303,,IMAGES\EX0010040324303-001.tif,Y,,,3 
EX0010040324303,,IMAGES\EX0010040324303-002.tif,,,, 
EX0010040324303,,IMAGES\EX0010040324303-003.tif,,,, 
EX0020943843934,,IMAGES\EX0020943843934-001.tif,Y,,,2 
EX0020943843934,,IMAGES\EX0020943843934-001.tif,,,, 
EX0030673452099,,IMAGES\EX0030673452099-001.tif,Y,,,2 
EX0030673452099,,IMAGES\EX0030673452099-002.tif,,,, 

所以: DocId2,DOCID,Y ,,, NumberOfPages的doc和 DocId2的第一TIF页,, DOCID ,,,,为DOC

的其他TIF,年龄在那一刻,我已经产生了下面的脚本:

Function readCompleteText(inputReadLocation, OutputwriteLocation) 
Const ForReading = 1 
Dim lenInputReadLocation 
Dim docId 
    Dim docId2 
Dim oStream 
Dim translationFileContents 
Dim inputText 
lenInputReadLocation = LEN(inputReadLocation) 

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set FileList = objWMIService.ExecQuery _ 
     ("ASSOCIATORS OF {Win32_Directory.Name='"& inputReadLocation &"'} Where " _ 
       & "ResultClass = CIM_DataFile") 

For Each objFile In FileList 
    Dim i 
    i = 0 
    docId = RIGHT(objFile.Name,(LEN(objFile.Name)-lenInputReadLocation-1)) 
    docId2 = LEFT(docId, LEN(docId)-4) 
    MyArray = Split(docId2, "-") 

    EXnumber = MyArray(0) 
    PageNumber = MyArray(1) 

    'inputText = EXnumber &",,"& docId &",,,," 
Next 

oStream.WriteText inputText,0 
oStream.SaveToFile OutputwriteLocation  
oStream.close 
oStream = Nothing 
End Function 

我的问题是:

  • 如何计算每个文档的页数?
  • 如何使用上面显示的图像的文件名来编写文本文件。

任何帮助是极大的赞赏:-)

+1

执行TIF文件包含多个页面或每个文件的单个页面?根据命名方案来看,它们可以是每页一页,其中“_001”作为第一页,“_002”作为第二页等等。另外,具体是什么你想输出到文本文件的字段?我看到了什么看起来像一个文件名段的一个空白字段甚至没有使用,部分文件路径,一个神秘的“Y”......你能提供更多的细节,所以这个问题可以得到回答? – Blackhawk

+1

你好Steve P,谢谢你的反应。是的,它是单页tif文件,其中001作为文档的第一页,002作为第二页等等。我也编辑了上面的问题。 所以,我需要输出一段文件名,然后是两个逗号,然后是文件夹路径,一个逗号,如果它是第一页,则为“Y”,三个逗号,如果是第一页,则为页数。 希望现在更清楚!如果能解决这个问题真的很棒!谢谢 – user2931778

回答

1

当您提取文件的信息,把这些信息(TifFile)的一个集合中的对象,你在用自己的身份证字典存储:

(不幸的是我无法测试的代码,但你的想法)

class TifFile 
    Public FileName 
    Public DocId 
    Public DocId2 
    Public ExNumber 
    Public PageNumber 
End Class 

'[..snip..] 

Set TifFileCollection = CreateObject("Scripting.Dictionary") 

For Each objFile In FileList 
    ' Do some parsing here 
    docId = RIGHT(objFile.Name,(LEN(objFile.Name)-lenInputReadLocation-1)) 
    docId2 = LEFT(docId, LEN(docId)-4) 
    exNumber = Split(docId2, "-")(0) 
    pageNumber = Split(docId2, "-")(1) 

    ' Put it in an object 
    Set oTifFile = new TifFile 
    oTifFile.FileName = objFile.Name 
    oTifFile.DocId = docId 
    oTifFile.DocId2 = docId2 
    oTifFile.ExNumber = exNumber 
    oTifFile.PageNumber = pageNumber 

    ' Add the file to a collection 
    if not TifFileCollection(DocId).Exists then 
     Set TifFileCollection.Item(DocId) = CreateObject("System.Collections.ArrayList") 
    end if 
    TifFileCollection.Item(DocId).Add oTifFile 
Next 

' Iterate through all files 
prefix = "IMAGES\" 
distinctNumberOfFiles = TifFileCollection.Count 
For each id in TifFileCollection.Keys 
    Set collectionOfTifFilesWithSameId = TifFileCollection(id) 
    numberOfFilesWithSameId = collectionOfTifFilesWithSameId.Count 

    for each oTifFile in collectionOfTifFilesWithSameId.ToArray() 
     If (numberOfFilesWithSameId > 1) and (oTifFile.PageNumber = "001") then 
      multipage = "Y" 
      pageCount = numberOfFilesWithSameId 
     else 
      multipage = "N" 
      pageCount = "" 
     End if 
     ' Output: 
     MsgBox join(array(_ 
      oTifFile.DocId, _ 
      "", _ 
      prefix & oTifFile.FileName, _ 
      multipage, _ 
      "", "", _ 
      pageCount), ",") 
    Next 
Next 
+0

我正面临类似的问题。为了保持清楚,我打开了一个新线程,试图简化代码。 Yyours给出了一个错误,所以尽管尽可能地减少会是一个很好的调试方法,但是我并不是成功的。你能看看这里吗?我正在使用一个类似的例子来保持它的清晰(一旦完成,我认为我应该有能力将它翻译成我自己的具体情况)。请看这里:http://stackoverflow.com/questions/19689660/howto-create-a-multi-dimensional-array-from-images-in-a-directory – Pr0no

相关问题