散分+普及DOS命令行知识解决思路
散分+普及DOS命令行知识
#include <stdio.h>
void main(int argc,char *argv[]) {
int i;
for (i=0;i<argc;i++) {
printf("argv[%d]=[%s]\n",i,argv);
}
}
//C:\>arg 1 2 3
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2]
//argv[3]=[3]
//
//C:\>arg 1 "2 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 3]
//
//C:\>arg 1 "2 ""3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 "3]
//
//C:\>arg 1 "2 "" 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 "]
//argv[3]=[3]
//
//C:\>arg 1 "2 \" 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 " 3]
//
//C:\>arg 1 "2 \\" 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 \]
//argv[3]=[3]
//
//C:\>arg 1 "2 \\\" 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 \" 3]
//
//C:\>arg 1 "2 \"\ 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 "\ 3]
//
//C:\>arg 1 "2 \"\\ 3"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[2 "\\ 3]
//
//C:\>arg 1 "|"
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[|]
//
//C:\>arg 1 |
//命令语法不正确。
//
//C:\>arg 1 ^|
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[|]
//
//C:\>arg 1 >
//命令语法不正确。
//
//C:\>arg 1 ^>
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[>]
//
//C:\>arg 1 <
//命令语法不正确。
//
//C:\>arg 1 ^<
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[<]
//
//C:\>arg 1 &
//argv[0]=[arg]
//argv[1]=[1]
//
//C:\>arg 1 &&
//命令语法不正确。
//
//C:\>arg 1 ^&
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[&]
//
//C:\>arg 1 ^&&
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[&]
//
//C:\>arg 1 ^&^&
//argv[0]=[arg]
//argv[1]=[1]
//argv[2]=[&&]
//
//命令行解释器概述命令行解释器是一个单独的软件程序,它可以在用户和操作系统之间提供直接的通讯。非图形命令行解释器用户界面提供运行基于字符的应用程序和实用程序的环境。通过使用类似于 MS-DOS 命令解释程序 Command.com 的单独字符,命令行解释器执行程序并在屏幕上显示其输出。Windows 服务器操作系统命令行解释器使用命令解释程序 Cmd.exe(该程序加载应用程序并指导应用程序之间的信息流动)将用户输入转换为操作系统可理解的形式。
//
//可以使用命令行解释器创建和编辑可自动执行常规任务的批处理文件(也称作脚本)。例如,可以使用脚本自动管理用户帐户或夜间备份。还可以使用 Windows 脚本宿主 CScript 的命令行版本在命令行解释器中运行更高级的脚本。详细信息,请参阅运行 Windows 脚本宿主。通过使用批处理文件来执行操作,可比使用用户界面更有效率。批处理文件接受命令行上可用的所有命令。有关批处理文件和脚本的详细信息,请参阅使用批处理文件。
//
//您可以自定义命令提示符窗口以易于查看并增强对程序运行方式的控制。有关自定义命令提示符窗口的详细信息,请参阅配置命令提示符。
//
//使用命令语法
//语法按命令及所带参数必须遵循的键入顺序出现。下面的 xcopy 命令示例显示了各种语法文本格式:
//
//xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:MM-DD-YYYY]] [/u] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:File1[+[File2]][+[File3]] [{/y | /-y}] [/z]
//
//下表说明如何解释不同的文本格式。
//
//格式化图例
// 格式 含义
// 斜体 用户必须提供的信息
// 粗体 用户必须准确键入的要显示的元素
// 省略号 (...) 在命令行中可多次重复的参数
// 中括号 ([]) 可选项
// 大括号 ({});选项用竖线 (|) 分隔。例如:{even|odd} 用户必须从选项集合中选择一个
//
//使用多个命令和条件处理符号
//使用条件处理符号可以在单个命令行或脚本中运行多个命令。通过条件处理符号运行多个命令时,条件处理符号右边的命令根据条件处理符号左边命令的执行结果来发挥作用。例如,只有在前一个命令失败的情况下才可能需要运行一个新命令。或者,只有在前一个命令成功时才可能需要运行一个新命令。
//
//可以使用下表列出的特殊字符来传递多个命令。
//
//字符 语法 定义
//& [...] Command1 & Command2 用来分隔一个命令行中的多个命令。Cmd.exe 运行第一个命令,然后运行第二个命令。
//&& [...] Command1 && Command2 只有在符号 && 前面的命令成功时,才运行该符号后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令运行成功时才运行第二个命令。
//|| [...] Command1 || Command2 只有在符号 || 前面的命令失败时,才运行符号 || 后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令未能运行成功(接收到大于零的错误代码)时才运行第二个命令。
//( ) [...] (Command1 & Command2) 用来分组或嵌套多个命令。
//
// 注意
//
//“与”符号 (&)、管道符号 (|) 以及括号 () 是特殊字符,将它们作为参数传递时,必须在其前面加上转义字符 (^) 或引号。
//如果某个命令成功完成操作,该命令就返回零 (0) 退出代码或不返回任何退出代码。有关退出代码的详细信息,请参阅 Microsoft Windows 部署和资源工具包。
//嵌套命令行解释器
//通过在命令提示符下打开新的 Cmd.exe 实例,可以在 Cmd.exe 内嵌套命令行解释器。默认情况下,Cmd.exe 的每个实例继承其父 Cmd.exe 应用程序的环境。通过嵌套 Cmd.exe 的实例,可以更改局部环境,而不会影响 Cmd.exe 的父应用程序。这使您能够保留 Cmd.exe 的原始环境,并在终止嵌套的命令行解释器之后返回到原始环境。但是在嵌套的命令行解释器中所做的更改将不会被保存。
//
//要嵌套命令行解释器,请在命令提示符下键入:
//
//cmd
//
//出现类似于下面内容的消息:
//
//Microsoft (R) Windows Server 2003 Standard Edition (TM)
//(C) 版权所有 1985-2002 Microsoft Corp.