扩展文件属性,诸如公司名称或产品名称,可以在使用Shell Folder
对象的GetDetailsOf
方法的脚本来获得。该方法采用与扩展属性关联的基于零的索引编号,并以字符串形式返回属性值。通常,GetDetailsOf
可用于检索可在详细Shell视图中显示的任何类型的信息(查看 - >选择详细信息)。请参阅Retrieving Extended File Properties。
唯一的问题是不同的Windows版本提供了不同的扩展文件属性集。例如,Windows XP有34个文件属性,Windows Vista — 266,Windows 7 — 284.不仅属性索引可以不同,还有属性名称(持续时间在Windows XP中= 长度在Windows Vista中),其中很混乱。对于可用的文件属性和它们的索引号的完整列表,请参阅this page或使用脚本像这样的:
var oShell = new ActiveXObject("Shell.Application");
var oFolder = oShell.Namespace("C:");
for (var i = 0; i < 300 /* some large number*/; i++)
WScript.Echo(i + " " + oFolder.GetDetailsOf(null, i));
总之,这里的示例代码在Windows Vista上执行你的任务。我找不到内部名称属性(可能没有正确地搜索),所以包括文件版本和产品版本代替:
var COMPANY_NAME = 33;
var FILE_VERSION = 145;
var PRODUCT_NAME = 251;
var PRODUCT_VERSION = 252;
var oShell = new ActiveXObject("Shell.Application");
var oFolder = oShell.Namespace("C:\\Windows");
var oFile = oFolder.ParseName("notepad.exe");
WScript.Echo("Company name: " + oFolder.GetDetailsOf(oFile, COMPANY_NAME));
WScript.Echo("Product name: " + oFolder.GetDetailsOf(oFile, PRODUCT_NAME));
WScript.Echo("File version: " + oFolder.GetDetailsOf(oFile, FILE_VERSION));
WScript.Echo("Product version: " + oFolder.GetDetailsOf(oFile, PRODUCT_VERSION));
注意,您可以使用GetDetailsOf(null, property_index)
获得特定于语言环境属性名称(这可能是在非英语版本的Windows有用):
WScript.Echo(oFolder.GetDetailsOf(null, COMPANY_NAME) + ": " + oFolder.GetDetailsOf(oFile, COMPANY_NAME));
非常感谢! 你是最棒的。 – 2010-01-17 13:09:38