如何检索 Windows 目录列表中出现的文件属性?

如何检索 Windows 目录列表中出现的文件属性?

我想提取软件包 (OrcaFlex) 在创建文件时添加的不寻常文件属性。在 Windows 资源管理器中,当我将光标悬停在文件列表(例如下面第一个屏幕截图中的 SomeSimulation.sim)上时,会出现一个弹出窗口,其中包含“模型状态”等属性。这里我了解到这些被称为信息提示。我想使用 Perl 或任何其他命令行语言检索模型状态值(字符串“时间域动态完成”)。我该怎么做?我使用的是 Windows 7,James 的评论帮助我明白我必须使用,也许像

文件列表

答案1

我是 OrcaFlex 的作者之一。以下 Python 代码绝对不会满足您的需要,对此我没有任何保证。

import struct

def readModelStateText(fileName):
    with open(fileName, 'rb') as f:
        content = f.read(0x4000) # hope that the text appears this early in the file
    signature = b'\xff\xfa\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    index = content.find(signature)
    if index == -1:
        return '<model state not found>'
    index += len(signature) + 2 # skip over block length
    stringLength = struct.unpack('<H', content[index:index + 2])[0]
    index += 2
    return content[index:index + stringLength].decode('utf-8')

这将利用块头签名在文件中寻找特定块。代码可能会找到与签名匹配的较早块的主体(我怀疑这种可能性很小)。并且还有其他方式可能导致此代码失败。

我提供它只是因为它可能有用,但附带严格的购买者自负义务。

答案2

我的聪明同事很早就注意到了字符串“Time domain dynamics complete”实际上存在于二进制文件中。所以我使用 grep 而不与 Windows 交互,这让我松了一口气,

head -10 SomeSimulation.sim | grep "Time domain dynamics complete"

相关内容