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

Powershell 使用通配符路径运行可执行文件,powershell,Powershell,我在一个有版本控制的目录中有一个可执行文件,所以当工具更新时目录会发生变化 我当前运行的命令如下所示: .\packages\Chutzpah.4.1.0\tools\chutzpah.console.exe .\Tests\chutzpah.json .\packages\Chutzpah**\tools\chutzpah.console.exe .\Tests\chutzpah.json 我想做如下事情: .\packages\Chutzpah.4.1.0\tools\chutzpah.

我在一个有版本控制的目录中有一个可执行文件,所以当工具更新时目录会发生变化

我当前运行的命令如下所示:

.\packages\Chutzpah.4.1.0\tools\chutzpah.console.exe .\Tests\chutzpah.json
.\packages\Chutzpah**\tools\chutzpah.console.exe .\Tests\chutzpah.json
我想做如下事情:

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

Windows命令行,但我希望这在powershell中是可能的。

实际上,Windows将扩展通配符,但如果非通配符部分不是唯一的,您将获得(我认为)第一个匹配项

所以我认为你的问题是

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

如果您有项目文件等,您可能可以从中提取

事实上,您可能希望从solution packages.config文件中提取一些内容,假设存在.\packages\prefix,因为您希望对NuGet包中的文件运行测试

你能提供更多的细节吗

编辑: 好的,所以您可能需要执行类似System.IO.Directory.GetDirectory(路径、模式)的操作


根据您使用“Chutzpah”所做的操作,您将获得一个或多个匹配项,您可以使用这些匹配项选择正确的路径。

这里的简单答案可能是使用
解析路径

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

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

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

请注意,
Resolve Path
有可能匹配多个内容。

如果我在键入时按tab键,窗口将展开,但如果我在上面的
bat
ps1
中以脚本形式运行,窗口将不会展开。我得到“系统找不到指定的路径”。我可以匹配多个路径,因为我知道只有一个路径。“解析路径”看起来是正确的方法,但此脚本不适合我。我获取
选择对象:找不到属性“Path”。
解析路径-相对
返回
字符串
路径信息
。因此,您必须删除
-Relative
Select Object
@PetSerAl,这就是我在进行编码时得到的。谢谢