Powershell调用工具,其参数包含通配符



我正在编写一个工具,它接收一个文件模式的参数,如下所示:

mytool arg1 *

问题是:字符*被解析为当前目录的内容,几乎与ls命令一样。如果我使用grave(`(转义通配符,它也会被命令接收。

我该如何解决那个问题?

使用逐字逐句(单引号(字符串('...'([1]来防止PowerShell在类Unix平台上执行的globbing(路径名扩展((仅限(调用外部程序时执行

mytool arg1 '*'

我无法解释为什么字符独立转义(`*(不起作用(从PowerShell 7.2.6开始(-可以说,它应该起作用;该问题已在GitHub第18038期中报告。


Windows上,PowerShell执行noglobbing,并且*'*'`*都作为逐字*传递到外部程序。

正如您所说,假设您使用的是Windows,那么执行globbing的一定是您所调用的基于Python的工具。


[1]可扩展(双引号(字符串("..."(也可以工作,但不需要扩展(字符串插值(

最新更新