1

程序 A(cmd.exe \C)(接受 1 个参数)

程序 B:(接受 1 个或多个参数)

C1,C2,C3, ... : agruments 列表

如果我输入A B C1 C2 C3cmd 提示符,所需的解释是

A (B (C1 C2 C3)) (C是B的论据,B是A的论据)

But NOT AS A (B) (C1) (C2) (C3)(B,C1,C2, C3, .... 是 A 的参数)

我应该如何在 cmd 提示符下转义/重定向/管道?

提前致谢

4

1 回答 1

6

根据Microsoft 的文档,您可以将|运算符用于管道。

您需要将命令重写为:

B C1 C2 C3 | A

希望这可以帮助。


更新

自从您更新了问题以来,我想您正在尝试执行以下操作:

cmd.exe /C B C1 C2 C3

您可以使用转义特殊字符^

或尝试像这样引用字符串:

cmd.exe /C "B C1 C2 C3"

更新 2

如果你对cmd.exe /C引号有疑问(例如 B、C1、C2、C3 包含空格),你应该用另一对引号将整个命令括起来

cmd.exe /C ""B" "C1" "C2" "C3""

仅供参考,在Processing quotation marks微软文档中关于 cmd.exe的部分:

如果您指定 /c 或 /k,则 cmd 会处理字符串的其余部分,并且仅当满足以下所有条件时才会保留引号:

  • 您不使用 /s。
  • 您只使用了一组引号。
  • 请勿在引号内使用任何特殊字符(例如:&<>( ) @ ^ |)。
  • 您在引号内使用一个或多个空白字符。
  • 引号内的字符串是可执行文件的名称。

如果不满足前面的条件,则通过检查第一个字符来处理字符串,以验证它是否是左引号。如果第一个字符是左引号,则它与右引号一起被剥离。保留右引号后的任何文本。

您可能还想阅读语法:转义字符、分隔符和引号

启动需要“引号”的程序路径中带有空格的批处理脚本

CMD /k ""c:\batch files\test.cmd" "Parameter 1 with space" "Parameter2 with space""

于 2013-01-30T07:53:19.300 回答