2013-05-30 39 views
1

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

我的意思是(7)详细文件属性窗口通过在文件名称上点击右键打开的选项卡的版本可在Windows财产。

我发现只与WSH

在此先感谢!

+0

看到http://stackoverflow.com/questions/8828314/getting-file-attributes -in-java – moskiteau

+0

@moskiteau在这篇文章中描述了检索“简单”propeties的方法。我发现了很多这样的解决方案。但文件版本是“难”的财产检索。我会尝试描述Scriptom的方式。但是它对我的测试部署脚本来说看起来太重了。 – zubactik

回答

0

首先,我试图找到一个解决方案,并且“为Java™平台提供了更多新的I/O API”(NIO.2),但没有成功。当我仔细看看你的WSH例子时,我意识到它是COM脚本。

因此,有2个possiblities来解决这个问题:

为从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")