【问题标题】:Groovy retrieve file version property (Windows)Groovy 检索文件版本属性(Windows)
【发布时间】:2013-05-30 05:36:11
【问题描述】:

您能帮我从 Groovy 脚本(在 Windows 平台上)检索文件版本属性吗?

我的意思是 Windows (7) 中可用的版本属性,在文件 属性 窗口的 详细信息 选项卡中通过右键单击文件名打开。

我发现只能使用WSH

提前致谢!

【问题讨论】:

  • @moskiteau 在该帖子中描述了检索“简单”属性的方法。我找到了很多这样的解决方案。但是文件版本是“难以”检索的属性。我将尝试描述 Scriptom 的方式。但是对于我的测试部署脚本来说,它看起来太重了。

标签: windows file properties groovy version


【解决方案1】:

首先,我尝试使用“Java™ 平台的更多新 I/O API”(NIO.2) 找到解决方案,但没有成功。当我仔细查看您的 WSH 示例时,我意识到它是 COM 脚本。

所以有两种可能解决这个问题:

可以找到从 Java 访问 Word 的示例here

更新 我试图解决您的问题,但在命名空间函数中遇到异常:

@Grab(group='net.java.dev.jna', module='platform', version='3.5.2')

import com.sun.jna.platform.win32.COM.COMException
import com.sun.jna.platform.win32.COM.COMObject
import com.sun.jna.platform.win32.OleAuto;
import com.sun.jna.platform.win32.Variant;
import com.sun.jna.platform.win32.Variant.VARIANT;
import com.sun.jna.platform.win32.WTypes.BSTR;
import com.sun.jna.platform.win32.WinNT.HRESULT;

public class Shell extends COMObject {

    public Shell() throws COMException {
        super("Shell.Application", false);
    }

    public HRESULT Namespace(String dir) throws COMException
    {
        def bstrDir = OleAuto.INSTANCE.SysAllocString(dir)
        def varDir = new VARIANT(bstrDir)
        def result = new VARIANT.ByReference()
        HRESULT hr = oleMethod(OleAuto.DISPATCH_METHOD, result, this.iDispatch, "Namespace", varDir);
    }
}

def shell = new Shell()
shell.Namespace("C:\\Temp")

【讨论】:

    猜你喜欢
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    相关资源
    最近更新 更多