我对这个主题,逗号与空格相比,在分隔参数方面有一些问题。cmd-逗号分隔参数相比空间?
他们是熟悉的命令提示符C程序员,也许能扔一些轻的问题..
我知道这样
c:\>program a b c
时,有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.
我看到dir a,b
给出相同的结果dir a b
但
c:\>program a,b,c
给出参数[0] =节目[1] = A,B,C
那么做一些?或所有? Windows命令使用;和?这是在每个命令的代码中进行的解释,还是由shell像空间一样完成的?
如果它是在每个命令的代码..我怎么知道它是哪一个呢? 我注意到explorer.exe的文档提到了逗号,例如。你可以做 explorer /e,.
但是DIR /?没有提到它,但可以使用它。而一个典型的c程序并不需要,作为一个分隔符..所以是这种情况,壳不使用逗号分隔,它使用空间。和windows命令一样,这样做'因为它们是(全部?)写入来限定shell使用逗号时进一步提供的参数吗?
如何判断shell执行了什么操作,以及MS C运行时或标准库执行了什么操作?我有一个Windows C PROG只是#include在顶部,以及显示argv的代码。使用gcc编译。我看不到一种方法,我可以看到哪些“参数化!”是从shell完成的,而且是从标准库自动执行的。另外,我注意到逗号不适用于外部程序xcopy或telnet。我想我已经看到了rundll32。我想这只是一些。可能不是一个公共可用库中的函数!也许只是特殊的ext程序,它会执行cmd.exe的内部命令。 –
barlop
2010-11-11 16:40:45
除了shell功能,一切都是由MS C运行时完成的。 Shell功能包括重定向('<', '>'等''''),管道('|'),流量控制('&&'和'||')和转义('^')等。 就像我说的,我从来没有见过在命令行上使用'''的程序,所以我并不惊讶复制和telnet不支持它。 – 2010-11-11 17:35:13
你是否建议ms c runtime确实分隔空格和引号?还是仍然是壳?如果它是ms c运行时,你能证明它吗?我没有看到你的第二个要点是如何区分unix,而windows的cos不是unix shell也是解析重定向和管道。 – barlop 2010-11-11 18:00:15