使用通配符路径运行可执行文件

时间:2015-10-21 00:05:10

标签: powershell

我在版本化的目录中有一个可执行文件,因此更新工具时目录会更改。

我运行的当前命令如下:

.\packages\Chutzpah.4.1.0\tools\chutzpah.console.exe .\Tests\chutzpah.json

我想做以下事情:

.\packages\Chutzpah**\tools\chutzpah.console.exe .\Tests\chutzpah.json

Windows命令行doesn't like to expand wildcards但我希望PowerShell能够实现这一点。

2 个答案:

答案 0 :(得分:4)

这里的简单回答可能是使用resolve-path

  

解析路径中的通配符,并显示路径内容。

所以在实践中你应该能够做到这样的事情。

$path = Resolve-Path ".\packages\Chutzpah**\tools\chutzpah.console.exe" -Relative
& $path ".\Tests\chutzpah.json"

请注意,Resolve-Path有可能匹配更多的东西。

答案 1 :(得分:0)

实际上,Windows会扩展通配符,但如果非通配符部分不是唯一的,那么你将获得(我认为)FIRST匹配。

所以我认为你的问题确实是

“我如何判断我应该执行哪个版本”

如果您有项目文件等,则可以从那里提取。

实际上,您可能希望从解决方案packages.config文件中提取一些内容,假设存在。\ packages \前缀,因为您希望对NuGet包中的文件运行测试。

您能提供更多详情吗?

编辑: 好的,所以你可能需要做类似System.IO.Directory.GetDirectories(path,pattern)的事情 https://msdn.microsoft.com/en-us/library/6ff71z1w(v=vs.110).aspx

根据您使用“Chutzpah”所做的事情,您将获得一个或多个可用于选择正确路径的匹配。