Windows“cmd.exe”是否以不同方式解析参数?
在我看来,Windows cmd.exe解析参数字符串与C编译的exe执行方式有何不同.
为了说明,cmd / C“echo ok”正确打印“ok”.但是,cmd“/ C”“echo ok”导致 '"echo ok' is not recognized as an internal or external command,operable program or batch file. 为了比较,这里是一个C程序,“CommandArguments.c”,它逐行打印参数: int main(int argc,char *argv[]) { int i; for (i = 0; i < argc; ++i) { printf("%sn",argv[i]); } } 如果我运行CommandArguments.exe“/ C”“echo ok”,它会正确打印 CommandArguments.exe /C echo ok 我问这个是因为我正在实现一个API来包装 所以,我想知道为什么cmd表现不同?解析规则的论点是什么?有没有其他程序也以不同的方式解析参数? 解决方法
任何应用程序都可以以其认为合适的任何方式解析命令行.大多数应用程序使用C运行时库解析器,但不要求这样做.
理想情况下,您的API应该要求调用者为命令行提供单个字符串而不是参数数组,因为这是启动Windows进程的正确语法. 如果这不可行,那么在目标应用程序需要特殊处理的情况下,您应该至少为呼叫者提供选项. 至于命令处理器,它的解析行为记录在内置帮助(cmd /?)中:
这有点乱,但您可以通过提供/ S开关来简化它.如果您要运行的命令是[foo],那么只需使用 cmd /s /c "[foo]" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 任何capistrano相当于windows/.net?
- 如何在StandardStyles.xaml中定义基元
- windows – 使用复制粘贴移动hg repo文件夹?
- active-directory – gpresult / v和rsop.msc在Windows 10上
- windows – IE通过注册表启用/禁用代理设置
- 在Windows Phone Store上发布Unity应用程序
- Windows Azure表存储行大小限制小于规定的1MB
- Windows-WAMP搭建与配置
- 在DLL接口中使用boost :: shared ptr可以吗?
- windows-server-2008 – 终端服务器2008:安装16位应用程序