【问题标题】:How to prevent hang with wildcard at powershell shell. (perforce)如何防止在 powershell shell 中使用通配符挂起。 (强制)
【发布时间】:2015-02-23 05:40:04
【问题描述】:

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

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

p4 文件 //this/that/*

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

p4 文件 "//this/that/*"

响应是立即的。但是,在 powershell 提示符下,引用路径并没有帮助。我找不到在 PS 提示符下得到快速响应的方法。所以cmd.exe和powershell调用app的方式还是有些区别的。

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

【问题讨论】:

  • 你能举个例子吗?据我所知,PowerShell不会扩展通配符,以正确的方式处理通配符是cmdlet的责任。例如write * 只写*,不做扩展。
  • 你可能是对的,我想我已经得出了一个结论。我会改写我的问题。

标签: shell powershell perforce wildcard-expansion


【解决方案1】:

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

p4 files "//this/that/*"

会产生这个命令行:

p4 files //this/that/*

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

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

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

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

【讨论】:

    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    相关资源
    最近更新 更多