Como recuperar essa propriedade de arquivo que aparece na listagem de diretórios do Windows?

0

Eu gostaria de extrair uma propriedade de arquivo incomum que um pacote de software (OrcaFlex) acrescenta quando ele cria um arquivo. No Windows Explorer, quando eu colocar o meu cursor sobre o arquivo listando como SomeSimulation.sim na primeira imagem abaixo, uma janela pop-up aparece com propriedades, incluindo 'estado Model'. Aqui eu aprendi que estes são chamados de infotips. Quero recuperar o valor do estado Modelo (a string "dinâmica no domínio do tempo completos") usando Perl ou qualquer outra linguagem de linha de comando. Como faço isso? Estou usando o Windows 7 e o comentário de James me ajudou a ver que precisaria usar isto , talvez como este .

    
por KAE 03.06.2016 / 16:13

2 respostas

1

Sou um dos autores do OrcaFlex. Com absolutamente nenhuma garantia, o seguinte código Python irá cortar o que você precisa.

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')

Isso procura um bloco específico no arquivo com conhecimento da assinatura do cabeçalho do bloco. É plausível (muito improvável, suspeito) que o código encontre o corpo de um bloco anterior que corresponda à assinatura. E há outras maneiras de esse código falhar.

Só estou oferecendo porque é possivelmente útil, mas com um robusto aviso de advertência.

    
por 23.06.2017 / 11:44
0

Meu colega de trabalho inteligente notou que a string "Time domain dynamics complete" está no arquivo binário no início. Então eu usei o grep sem interagir com o Windows, o que é um alívio,

head -10 SomeSimulation.sim | grep "Time domain dynamics complete"
    
por 03.06.2016 / 20:56