2014-02-27 2 views
1

Если вы открываете свойства файла в Windows, обычно отображается вкладка «Сведения». Я хочу получить доступ к информации на этой вкладке, но я не знаю, как это сделать. Есть ли модуль для этого? У кого-то есть sniplet кода?Как получить информацию о файле в Windows

Я пытался работать с Win32 :: File's GetAttributes, но это не те атрибуты, которые я искал.

ответ

2
use Win32::OLE; 

my $objShell = Win32::OLE->new("Shell.Application") or die; 
my $objFolder = $objShell->NameSpace($myDir) or die; 
my $objFile = $objFolder->ParseName($fileName) or die; 

while ($i <= 34) 
{ 
    my $propertyName = $objFolder->GetDetailsOf($fileName,$i); 
    my $propertyValue = $objFolder->GetDetailsOf($objFile,$i); 
    print "$i -- $propertyName -- $propertyValue\n"; 
    $i++; 
} 
+0

Спасибо, это работает! Что я заметил: для $ myDir путь должен быть в форме с двойной обратной косой чертой (например, c: \\ mydir - c:/mydir не будет работать). Кроме того, возможно, лучше использовать foreach my $ i (0 .. 34) вместо цикла while. – capfan

1

Вы можете создать объект COM "Shell.Application". Он предоставляет метод .NameSpace(folder), который возвращает ссылку на пространство имен указанной папки, которое содержит необходимую информацию. Полученный экземпляр содержит коллекцию Items со ссылками на каждый из файлов в папке и .GetDetailsOf(file,property) для извлечения каждого из значений, отображаемых на вкладке сведений и столбцах исследователя.

Извините, я понятия не имею о perl, поэтому я не могу включить какой-либо рабочий код.

Смежные вопросы