cmd-逗号分隔参数与空间相比?

bar*_*lop 7 c command-line windows-xp cmd

在分隔参数时,我对这个主题有一些疑问,比较空格的逗号.

他们是熟悉cmd提示符的C程序员的问题,可能会对它们有所了解.

我知道这样做的时候

c:\>program a b c
Run Code Online (Sandbox Code Playgroud)

有4个参数 [0]=program [1]=a [2]=b [3]=c

根据hh ntcmds.chm概念..

壳概述

; and , are used to separate parameters

; or , command1 parameter1;parameter2  Use to separate command parameters.
Run Code Online (Sandbox Code Playgroud)

我看到dir a,b 给出了相同的结果dir a b

c:\>program a,b,c 给出参数[0] =程序[1] = a,b,c

一些人呢?还是所有?windows命令使用; 而且,?并且是在每个命令的代码中解释,还是像shell一样用空间完成?

如果它在每个命令的代码中......我怎么知道它做了什么?我注意到explorer.exe的文档提到了逗号,例如你可以这样做 explorer /e,.

但是DIR /?没有提到它,但可以使用它.并且一个典型的c程序根本不作为分隔符.所以shell不使用逗号分隔,它使用空格.和windows命令一样,这样做是因为它们是(全部?)写入来分隔shell在使用逗号时进一步给出的参数?

Tim*_*son 4

Unix 和 Windows 之间有两个区别:

  • 内部命令例如DIR内置于 shell 中;他们的命令行语法不必遵循与常规程序相同的规则
  • 在 Windows 上,程序负责解析自己的命令行。shell 解析重定向和管道,然后将命令行的其余部分以一个字符串传递给程序

使用 Visual Studio 构建的 Windows C 程序使用 Microsoft C 运行时中的命令行解析器,该解析器类似于典型的 Unix shell 解析器并遵守空格和引号。

我从未见过使用,or;作为命令行分隔符的 C 程序。我知道 的特殊情况,但直到现在explorer /e,.我才看到这个例子。dir a,b