Windows操作系统主要是用图形化界面操作,但是并不抛弃命令行的界面,但这个命令行界面就完全不是DOS操作系统了。同时,Windows应用程序也分图形界面(包括无界面,如服务程序)和命令行界面。
命令行就是在Windows操作系统中打开DOS窗口,以字符串形式执行Windows管理程序。现在大部分用户都使用Windows的可视化界面,如果能够熟练掌握Windows系统中的命令行界面,将会更加占有优势。
命令行程序分为内部命令和外部命令,内部命令是随command.com装入内存的,而外部命令是一条一条单独的可执行文件。
1)内部命令都集中在根目录下的command.com文件中,计算机每次启动时都会将这个文件读入内存,即在计算机运行时,这些内部命令都驻留在内存中,但用dir命令是看不到这些内部命令的。
2)外部命令都是以一个个独立的文件存放在磁盘上的,它们都是以com和exe为后缀的文件,并不常驻内存,只有在需要时才会被调入内存。
虽然两种操作都是使用命令来进行的,但由于命令行和纯DOS系统使用的不是同一个平台,因此也存在一些区别。具体表现如下。
1.位置及地位特殊
命令行程序已经不是专门用COMMAND目录存放,而是放在32位系统文件(Windows XP)安装目录下的SYSTEM32子目录中。由此可知,Windows XP中的命令行命令已得到非常高的特殊地位。而且通过查看SYSTEM32\DLLCACHE目录可知,Windows XP还将其列入了受保护的系统文件之列,倘若SYSTEM32目录中的命令行命令受损,就用该DLLCACHE目录中的备份即可恢复。当然,由于Windows XP是脱胎于Windows NT的,因此,命令行调用主程序已不是Windows 9X时代的COMMAND.COM,而是类似于Windows NT系统下的CAM.EXE。
2.一些命令只能通过命令行直接执行
Windows 9X中的系统文件扫描器sfc.exe是一个Windows风格的对话框,而在Windows XP及以后版本的Windows系统中,这条命令却必须在命令行状态下手工输入才能按要求运行,而运行时又是标准的图形界面。
3.命令行窗口的使用与以前大不相同
在窗口状态下,已经不再像Windows 9X的DOS窗口那样有一条工具栏,因此,不少人发现无法在Windows XP及以后版本的Windows系统命令行窗口中进行复制、粘贴等操作。其实Windows XP及以后版本的Windows系统命令行窗口是支持窗口内容选定、复制、粘贴等操作的,只是有关命令被隐藏了起来。用鼠标对窗口内容的直接操作只能选取,即按下鼠标左键拖动时,其内容会反白显示,如果按Ctrl+C组合键,则无法将选取内容复制到剪贴板,而必须在窗口的标题栏上右击之后,再选择“编辑”选项,才可以在弹出的快捷菜单中看到复制、粘贴等选项。
在Windows 7中的记事本或Word中输入“新北京,新奥运”信息之后,复制输入的内容并右击命令行标题栏,在弹出快捷菜单中选择“编辑”→“粘贴”选项,即可将其粘贴到命令行窗口中。
还可以前后浏览每一步操作屏幕所显示的内容,这在全屏幕状态下是不可行的,必须使用Alt+Enter组合键切换到窗口状态,这时窗口右侧会出现一个滚动条,拖动滚动条就可前后任意浏览了。但如操作的显示结果太多,则超过内存缓冲的内容会按照FIFO(First in First out,先进先出)的原则自动丢弃,使用CLS命令后可以同时清除屏幕及缓冲区的内容。
4.添加大量快捷功能键和类DOSKEY功能
在Windows XP及以后版本的Windows操作系统的命令行状态下,通过mem /c命令看不到内存中自动加载DOSKEY.EXE命令的迹象。
具备类似传统的DOSKEY功能如下。
PageUp、PageDown:重新调用最近的两条命令。
Intert:切换命令行编辑的插入与改写状态。
Home、End:快速移动光标到命令行的开头或结尾。
Delete:删除光标后面的字符。
Enter:复制窗口内选定的内容(取代Ctrl+C组合键)。
F7:显示历史命令列表,可从列表中方便地选取曾经使用过的命令。
F9:输入命令号码功能,直接输入历史命令的编号即可使用该命令。
F1~F9的其他键分别定义了不同的功能,具体操作时一试便知。
5.对系统已挂接的码表输入法的直接支持
以前Windows 9X的DOS命令提示符下要显示和输入汉字,必须单独启动中文输入法,如DOS 95或UCDOS等其他汉字系统。在Windows XP及以后版本的Windows系统的CMD命令行下已可以直接显示汉字,并按图形界面完全相同的热键,调用系统中已安装的各种码表输入法,如Ctrl+Shift组合键是切换输入法,Ctrl+Space组合键是切换输入法开关,Shift+Space组合键是切换全角与半角状态,Ctrl+.组合键是切换中英文标点等。不过,该命令行下的输入法只能在命令行进行输入,比如打开了一个Edit编辑器,输入法就不起作用了。
6.CMD的命令参数
CMD的命令格式:CMD[a|u][/q][/d][/e:on|/e:off][/f:on|/f:off][/v:on|/v:off][[/s][/c|/k]string]
/c执行字符串指定的命令然后中断。
/k执行字符串指定的命令但保留。
/s在/c或/k后修改字符串处理。
/q关闭回应。
/d从注册表中停用执行AUTORUN命令。
/t:fg设置前景/背景颜色。
/a使向内部管道或文件命令的输出成为ANSI。
/e:on启用命令扩展。
/u使向内部管道或文件命令的输出成为Unicode。
/e:off停用命令扩展。
/f:on启用文件和目录名称完成字符。
/f:off停用文件和目录名称完成字符。
/v:on将c作为定界符启动延缓环境变量扩展。
/v:off停用延缓的环境扩展。
【注意】
如果字符串有引号,可以接受用命令分隔符&&隔开的多个命令。由于兼容原因,
/X与/e:on相同,且/r与/c相同,忽略任何其他命令选项。
如果指定了/c或/k参数,命令选项后的命令行其他部分将作为命令行处理,在这种情况下,将使用下列逻辑处理引号字符(")。
如果符合下列所有条件,则在命令行上的引号字符将被保留。
不带/s命令选项。
成对使用引号字符。
在两个引号字符之间没有特殊字符,特殊字符为下列中的任意一个:<>()@^|。
在两个引号字符之间有至少一个空白字符。
在两个引号字符之间有至少一个可执行文件的名称。
否则,看第一个字符是否是一个引号字符,如果是则舍去开头字符,并删除命令行上的最后一个引号字符,保留最后一个引号字符之后的文字。如果/d未在命令行上被指定,当CAM开始时,则会寻找REG_SZ/REG_EXPAND_SZ注册表变量。如果其中一个或两个都存在,则HKEY_LOCAL_MACHINE\Software\Microsoft\Command Procssor\AutoRun变量和HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions变量将会先被执行到0X1或0X0。用户特定设置有优先权,命令行命令选项比注册表设置有优先权。
7.命令行扩展包括对命令的更改和添加
使用命令行扩展的命令主要有:DEL或ERASE、COLOR、CD或CHDIR、MD、MKDIR、PROMPT、PUSHD、POPD、SET SETLOCAL、ENDLOCAL、IF、FOR、CALL、SHIFT、GOTO、START、ASSOC、FTYPE等。
延迟变量环境扩展不按默认值启用,可以用/v:on或/v:off参数,为某个启用或停用CMD调用的延迟环境变量扩充。也可在计算机上或用户登录会话上,启用或停用CMD所有调用的完成,这需要通过设置使用Regedit32.exe注册表中的一个或两个REG_DWORD值(HKEY_LOCAL_MACHINE\Software\Command processor\DelayedExpansion)和(HKEY_CURRENT_USER\ Software\Microsoft\Command processor\DelayedExpansion)到0X0或0X1来实现。用户特定设置比计算机设置有优先权,命令行命令选项比注册表设置有优先权。