2016-02-08 93 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 
}