如何防止在 powershell shell 处使用通配符挂起。 (强制)

How to prevent hang with wildcard at powershell shell. (perforce)

也许这是一个特定的perforce问题,但我认为不是。至少,在某种程度上,它涉及 cmd.exe 和 powershell 之间的区别,涉及它如何将参数传递给命令行程序。

在 cmd.exe 提示符下发出的这个 perforce 命令有问题:

p4 个文件//this/that/*

因为需要很长时间才能回复。但是如果我引用这样的路径:

p4 文件“//this/that/*”

响应是即时的。但是,在 powershell 提示符下,引用路径无济于事。我找不到在 PS 提示符下获得快速响应的方法。因此,cmd.exe 和 powershell 调用应用程序的方式存在一些差异。

不要被带有正斜杠的路径形式分散注意力。这是 p4 存储库中的路径,并不意味着被解释为文件系统路径。

当参数不包含 space 或以引号开头时,PowerShell 在将参数传递给本机应用程序时不会在参数周围添加引号。所以这个 PowerShell 命令:

p4 files "//this/that/*"

将导致此命令行:

p4 files //this/that/*

要解决您的问题,您需要在参数字符串中按字面意思加上引号:

p4 files '"//this/that/*"'

p4 files `"//this/that/*`"

p4 files """//this/that/*"""