2016-02-08 90 views
0

我正在尋找一種簡單的方法來讀取位於編譯.jar的META-INF文件夾中的pom.properties文件的第二行。 (請看這裏:http://maven.apache.org/guides/getting-started/index.html#How_do_I_add_resources_to_my_JAR)。我經常需要知道該文件中的日期,每次打開罐子並深入其中都是一件痛苦的事情。我想要一個Windows批處理腳本,我可以通過右鍵單擊.jar來運行(所以我需要Windows註冊表命令的幫助)。批處理命令的結果可以顯示在cmd窗口中(值得一提的是將值複製到剪貼板)。Windows批處理腳本,用於讀取.jar中的pom.properties文件

簡而言之:我希望能夠右鍵單擊Windows資源管理器中的.jar文件>選擇'獲取Maven生成日期'(或其他)>並打開pom.properties文件的第二行控制檯(並複製到剪貼板)。

我知道這不能太難,我只是不知道怎麼找:)。

在此先感謝您的幫助。

+1

堆棧溢出不是代碼寫入服務。我們可以幫助您找出您編寫的代碼存在的問題,但不要等我們開始爲您完成項目。我建議[這個答案](http://stackoverflow.com/a/14204577)將是你的劇本的優秀骨幹。 – rojo

+0

其實,[這個答案](http://stackoverflow.com/a/24670484/1683264)是我曾打算鏈接。不過,前一個並不壞。 – rojo

+0

我爲我不適當的帖子道歉,但是感謝您的鏈接。 –

回答

0

請注意,.NETv4.5需要使用System.IO.Compression.FileSystem類。

Add-Type -As System.IO.Compression.FileSystem; 

$sourceJar = <source-jar-here>; 
$jarArchive = [IO.Compression.ZipFile]::OpenRead($sourceJar).Entries 
try 
{ 
    foreach($archiveEntry in $jarArchive) 
    { 
     if($archiveEntry.Name -like "*pom.properties") 
     { 
      $tempFile = [System.IO.Path]::GetTempFileName() 
      try 
      { 
       [System.IO.Compression.ZipFileExtensions]::ExtractToFile($archiveEntry, $tempFile, $true) 
       $mavenDate = Get-Content $tempFile -First 2 
       Write-Host $mavenDate 
      } 
      finally 
      { 
       Remove-Item $tempFile 
      } 
     } 
    } 
} 
finally 
{ 
    $jarArchive.Dispose 
}