2.1 Windows系统中的命令行及其操作
随着互联网的普及,网络用户逐渐增多,由此带来的安全问题也威胁着计算机安全,而Windows操作系统本身自带一些病毒和受残损的文件,常常使用户无法正常工作。熟练掌握命令行的使用方法,能保障计算机系统的安全性能,从而提高工作效率。因此,为了保障系统的稳定安全,需要先掌握Windows系统中命令行的相关知识。
2.1.1 Windows系统中的命令行概述
虽然Windows操作系统主要使用图形化界面,但是并不抛弃命令行界面,且这个命令行界面也完全不是DOS操作系统了。同时Windows应用程序也分图形化界面(包括无界面,如服务程序)和命令行界面。
命令行就是在Windows操作系统中打开DOS窗口,以字符串形式执行Windows管理程序。现在大部分用户都使用Windows的可视化界面,如果能够熟练掌握Windows系统中的命令行界面,则会更有优势。
命令行程序分为内部命令和外部命令,内部命令是随command.com装入内存的,而外部命令是一个个单独的可执行文件。
● 内部命令都集中在根目录下的command.com文件中,每次启动计算机时都会将这个文件读入内存,也就是在计算机运行时,这些内部命令都驻留在内存中,用dir命令是看不到这些内部命令的。
● 外部命令都是以一个个独立的文件存放在磁盘上,它们都是以com和exe为后缀的文件,并不常驻内存,只有在计算机需要时才会被调入内存。
虽然两种操作都是使用命令来进行的,但由于命令行和纯DOS系统不是使用同一个平台,因此也存在一些区别。
1.位置及地位特殊
命令行程序已经不是专门用COMMAND目录存放的,而是放在32位系统文件(Windows)安装目录下的SYSTEM32子目录中。由此可知,Windows中的命令行命令已有非常高的特殊地位,而且通过查看SYSTEM32\DLLCACHE目录可知,Windows还将其列入了受保护的系统文件之列,倘若SYSTEM32目录中的命令行命令受损,那么使用DLLCACHE目录中的备份即可恢复。
2.一些命令只能通过命令行直接执行
Windows 9X中的系统文件扫描器sfc.exe是一个Windows风格的对话框,在Windows XP及以后版本的Windows系统中,这个命令必须在命令行状态手工输入下才能按要求运行,而运行时又是标准的图形化界面。图2.1.1-1所示为Windows 10 cmd应用程序窗口。
图2.1.1-1
3.命令行窗口的使用与以前大不相同
在窗口状态下,已经不再像Windows 9X的DOS窗口那样有一条工具栏,因此,不少人发现无法在Windows XP及以后版本的Windows系统命令行窗口中进行复制、粘贴等操作。其实Windows XP及以后版本的Windows系统命令行窗口是支持窗口内容选定、复制、粘贴等操作的,只是有关命令被隐藏了起来。用鼠标对窗口内容进行直接操作只能够选取,即按下鼠标左键拖动时,其内容会反白显示,如果按“Ctrl+C”组合键,则无法将选取内容复制到剪贴板,而必须在窗口的标题栏上右击之后,再选择“编辑”选项,在弹出的快捷菜单中就看到复制、粘贴等选项了。
在Windows 10中的记事本或Word文档中输入“你好”信息之后,复制输入的内容并右击命令行标题栏,在弹出的快捷菜单中选择“编辑”→“粘贴”选项,即可将其粘贴到命令行窗口中,如图2.1.1-2所示。图2.1.1-3为粘贴后的效果。
图2.1.1-2
图2.1.1-3
还可以前后浏览每一步操作屏幕所显示的内容:这在全屏幕状态下是不可行的。必须使用“Alt+Enter”组合键切换到窗口状态,这时窗口右侧会出现一个滚动条,拖动滚动条就可前后任意浏览了。但如果操作的显示结果太多,则超过内存缓冲的内容会按照FIFO(First In First Out,先进先出)原则自动丢弃,使用CLS命令后可以同时清除屏幕及缓冲区内容。
4.添加大量快捷功能键和类DOSKEY功能
在Windows 10及以后版本的Windows操作系统的命令行状态下,通过“mem /c”命令看不到内存中自动加载DOSKEY.EXE命令的迹象。
具备类似传统的DOSKEY功能如下。
● PageUp、PageDown:重新调用最近的两条命令。
● Insert:切换命令行编辑的插入与改写状态。
● 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:从注册表中停用执行ARTORUN命令。
● /a:使向内部管道或文件命令的输出成为ANSI。
● /e:on:启用命令扩展。
● /u:使向内部管道或文件命令的输出成为Unicode。
● /e:off:停用命令扩展。
● /f:on:启用文件和目录名称完成字符。
● /f:off:停用文件和目录名称完成字符。
● /v:on:将c作为定界符启动延缓环境变量扩展。
● /v:off:停用延缓的环境扩展。
注意
如果字符串有引号,则可以接受用命令分隔符“&&”隔开的多个命令。由于兼容的原因,/X与/e:on相同,且/r与/c相同,忽略任何其他命令选项。
如果指定了/c或/k参数,命令选项后的其他命令行部分将作为命令行处理,在这种情况下,将使用下列逻辑处理引号字符(")。
1)如果符合下列所有条件,则在命令行上的引号字符将被保留。
● 不带/s命令选项。
● 成对使用引号字符。
● 在两个引号字符之间没有特殊字符,特殊字符为<>、()、@、^、|中的任意一下。
● 在两个引号字符之间至少有一个空白字符。
● 在两个引号字符之间至少有一个可执行文件的名称。
2)否则,看第一个字符是否是引号字符,如果是,则舍去开头字符并删除命令行上的最后一个引号字符,保留最后一个引号字符之后的文字。如果/d在命令行上未被指定,当CMD开始时,则会寻找REG_SZ/REG_EXPAND_SZ注册表变量。如果其中一个或两个都存在,则HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\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来实现。用户特定设置优先计算机设置,命令行命令选项优先注册表设置。
2.1.2 Windows系统中的命令行操作
下面简单介绍一下Windows操作系统中命令行的各种操作,如复制、粘贴、设置属性等。当启动Windows中的命令行后,将会弹出“命令提示符”窗口。Windows命令行与DOS界面不一样,它会先显示当前操作系统的版本号,并将当前用户默认为当前提示符。在Windows命令下所使用的操作与DOS命令中的操作一样,但在使用Windows命令时,可以自定义设置命令行的背景、显示的文字、窗口弹出的大小、窗口弹出的位置等。
右击命令行标题栏,将会弹出一个快捷菜单,在其中选择相应的菜单项,即可完成相应的操作,如图2.1.2-1所示。
图2.1.2-1