2013-05-30 82 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")