在DigitalMicrograph脚本中打开文件夹中的多个文件

时间:2014-11-03 11:20:57

标签: file-io dm-script

我正在尝试编写一个DigitalMicrograph脚本,该脚本会打开包含文件名中特定字符串的所有图像。

我知道如何使用OpenImage( filename )打开图像,我在文档中看到命令GetFilesInDirectory()存在,这似乎是我需要的。但是,我不明白我如何使用此命令。有人可以给我一个代码片段来证明这一点吗?

1 个答案:

答案 0 :(得分:1)

命令GetFilesInDirectory()为您提供给定目录中所有文件/子文件夹的TagList。这在以下示例中显示:

String folder 
TagGroup FileList
number fFiles   = 1
number fFolders = 2

If ( !GetDirectoryDialog( "Select base folder", "", folder ) ) 
    Exit(0)

FileList = GetFilesInDirectory( folder, fFiles + fFolders )

If ( FileList.TagGroupCountTags() > 0 ) 
    FileList.TagGroupOpenBrowserWindow( "Files & Folders", 0 )

此脚本将在浏览器窗口中显示生成的TagGroup,如下所示。每个列表条目本身就是一个TagGroup,它包含一个标签“Name”。此标记包含文件或文件夹名称。您可以使用该命令仅为您提供文件,仅为您提供子文件夹,或两者兼而有之。

enter image description here

一旦拥有所有条目的TagGroup,您的处理就像DigitalMicrograph中的任何其他TagGroup一样。例如,您可以浏览列表以读出字符串,并将它们简单地打印到结果窗口,如下所示:

number nTags = FileList.TagGroupCountTags()
for ( number I = 0; I < nTags; i++ )
{
    TagGroup entryTG
    FileList.TagGroupGetIndexedTagAsTagGroup( i, entryTG )
    if ( entryTG.TagGroupIsValid() )
    {
        string filestr
        if ( entryTG.TagGroupGetTagAsString( "Name", filestr ) )
        {
            Result( "\n File:" + filestr )
        }
    }
}