运行CMD 查看端口命令及端口功能详解

size=3][color=#ff0000]在运行里-cmd-netstat -an就会显示出你开的端口了!![/color][/size] 最近被病毒搞的头昏脑涨的,不过也收获不小哟,知道了点小方法,与大家共勉。

当前最为常见的木马通常是基于TCP/UDP协议进行client端与server端之间的通讯的,既然利用到这两个协议,就不可避免要在server端(就是被种了木马的机器了)打开监听端口来等待连接。例如鼎鼎大名的冰河使用的监听端口是7626,Back Orifice2000则是使用54320等等。那么,我们可以利用查看本机开放端口的方法来检查自己是否被种了木马或其它hacker程序。以下是详细方法介绍。

1. Windows本身自带的netstat命令

关于netstat命令,我们先来看看windows帮助文件中的介绍:

Netstat

显示协议统计和当前的 TCP/IP 网络连接。该命令只有在安装了 TCP/IP 协议后才可以使用。

netstat [-a] [-e] [-n] [-s] [-p protocol] [-r] [interval]

参数

-a

显示所有连接和侦听端口。服务器连接通常不显示。

-e

显示以太网统计。该参数可以与 -s 选项结合使用。

-n

以数字格式显示地址和端口号(而不是尝试查找名称)。

-s

显示每个协议的统计。默认情况下,显示 TCP、UDP、ICMP 和 IP 的统计。-p 选项可以用来指定默认的子集。

-p protocol

显示由 protocol 指定的协议的连接;protocol 可以是 tcp 或 udp。如果与 -s 选项一同使用显示每个协议的统计,protocol 可以是 tcp、udp、icmp 或 ip。

-r

显示路由表的内容。

interval

重新显示所选的统计,在每次显示之间暂停 interval 秒。按 CTRL+B 停止重新显示统计。如果省略该参数,netstat 将打印一次当前的配置信息。

好了,看完这些帮助文件,我们应该明白netstat命令的使用方法了。现在就让我们现学现用,用这个命令看一下自己的机器开放的端口。进入到命令行下,使用netstat命令的a和n两个参数:

C:\>netstat -an

Active Connections

Proto Local Address Foreign Address State

TCP 0.0.0.0:80 0.0.0.0:0 LISTENING

TCP 0.0.0.0:21 0.0.0.0:0 LISTENING

TCP 0.0.0.0:7626 0.0.0.0:0 LISTENING

UDP 0.0.0.0:445 0.0.0.0:0

UDP 0.0.0.0:1046 0.0.0.0:0

UDP 0.0.0.0:1047 0.0.0.0:0

解释一下,Active Connections是指当前本机活动连接,Proto是指连接使用的协议名称,LocalAddress是本地计算机的 IP 地址和连接正在使用的端口号,Foreign Address是连接该端口的远程计算机的 IP地址和端口号,State则是表明TCP连接的状态,你可以看到后面三行的监听端口是UDP协议的,所以没有State表示的状态。看!我的机器的7626端口已经开放,正在监听等待连接,像这样的情况极有可能是已经感染了冰河!急忙断开网络,用杀毒软件查杀病毒是正确的做法。

[img=1,1].cn/Counter?objectid=20050728439125&columnid=4052&site=eschool&reserve=%E6%95%99%E4%BD%A0%E5%AD%A6%E4%BC%9A%E6%9F%A5%E7%9C%8B%E8%87%AA%E5%B7%B1%E5%BC%80%E6%94%BE%E7%9A%84%E7%AB%AF%E5%8F%A3[/img] 2.工作在windows2000下的命令行工具fport

使用windows2000的朋友要比使用windows9X的幸运一些,因为可以使用fport这个程序来显示本机开放端口与进程的对应关系。

Fport是FoundStone出品的一个用来列出系统中所有打开的TCP/IP和UDP端口,以及它们对应应用程序的完整路径、PID标识、进程名称等信息的软件。在命令行下使用,请看例子:

D:\>fport.exe

FPort v1.33 - TCP/IP Process to Port Mapper

Copyright 2000 by Foundstone, Inc.

[url=/][/url]

Pid Process Port Proto Path

748 tcpsvcs -> 7 TCP C:\WINNT\System32\ tcpsvcs.exe

748 tcpsvcs -> 9 TCP C:\WINNT\System32\tcpsvcs.exe

748 tcpsvcs -> 19 TCP C:\WINNT\System32\tcpsvcs.exe

416 svchost -> 135 TCP C:\WINNT\system32\svchost.exe

是不是一目了然了。这下,各个端口究竟是什么程序打开的就都在你眼皮底下了。如果发现有某个可疑程序打开了某个可疑端口,可千万不要大意哦,也许那就是一只狡猾的木马!

Fport的最新版本是2.0。在很多网站都提供下载,但是为了安全起见,当然最好还是到它的老家去下:

[url=/knowledge/zips/fport.zip]/knowledge/zips/fport.zip[/url]

3.与Fport功能类似的图形化界面工具Active Ports

Active Ports为SmartLine出品,你可以用来监视电脑所有打开的TCP/IP/UDP端口,不但可以将你所有的端口显示出来,还显示所有端口所对应的程序所在的路径,本地IP和远端IP(试图连接你的电脑IP)是否正在活动。

更棒的是,它还提供了一个关闭端口的功能,在你用它发现木马开放的端口时,可以立即将端口关闭。这个软件工作在Windows NT/2000/XP平台下。你可以在

[url=http://www.smartline.ru/software/aports.zip]http://www.smartline.ru/software/aports.zip[/url]得到它。

其实使用windows xp的用户无须借助其它软件即可以得到端口与进程的对应关系,因为windows xp所带的netstat命令比以前的版本多了一个O参数,使用这个参数就可以得出端口与进程的对应来。

上面介绍了几种查看本机开放端口,以及端口和进程对应关系的方法,通过这些方法可以轻松的发现基于TCP/UDP协议的木马,希望能给你的爱机带来帮助。但是对木马重在防范,而且如果碰上反弹端口木马,利用驱动程序及动态链接库技术制作的新木马时,以上这些方法就很难查出木马的痕迹了。所以我们一定要养成良好的上网习惯,不要随意运行邮件中的附件,安装一套杀毒软件,像国内的瑞星就是个查杀病毒和木马的好帮手。从网上下载的软件先用杀毒软件检查一遍再使用,在上网时打开网络防火墙和病毒实时监控,保护自己的机器不被可恨的木马入侵

 

第二篇:CMD命令基础详解

欢迎大家来到里,[CMD的三件"宝"],好东西不独享,所以今天我给大家带来了。***********************set***************************************显示、设置或删除 cmd.exe 环境变量。SET [variable=[string]]variable 指定环境变量名。string 指定要指派给变量的一系列字符串。要显示当前环境变量,键入不带参数的 SET。如果命令扩展被启用,SET 会如下改变:可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配SET 命令已使用的名称的所有变量的值。例如:SET P会显示所有以字母 P 打头的变量如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL设置成 1。SET 命令不允许变量名含有等号。在 SET 命令中添加了两个新命令行开关:SET /A expressionSET /P variable=[promptString]/A 命令行开关指定等号右边的字符串为被评估的数字表达式。该表达式评估器很简单并以递减的优先权顺序支持下列操作:() - 分组! ~ - - 一元运算符* / % - 算数运算符+ - - 算数运算符<< >> - 逻辑移位& - 按位“与”^ - 按位“异”| - 按位“或”= *= /= %= += -= - 赋值&= ^= |= <<= >>=, - 表达式分隔符如果您使用任何逻辑或取余操作符, 您需要将表达式字符串用引号扩起来。在表达式中的任何非数字字符串键作为环境变量名称,这些环境变量名称的值已在使用前转换成数字。如果指定了一个环境变量名称,但未在当前环境中定义,那么值将被定为零。这使您可以使用环境变量值做计算而不用键入那些 % 符号来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的,那么它显示该表达式的最后值。该分配的操作符在分配的操作符左边需要一个环境变量名称。除十六进制有 0x 前缀,八进制有 0 前缀的,数字值为十进位数字。因此,0x12 与 18 和 022 相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,因为 8 和 9 不是有效的八进制位数。/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的。环境变量替换已如下增强:%PATH:str1=str2%会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的开始到 str1 剩余部分第一次出现的地方,都一直保持相配。也可

以为扩展名指定子字符串。%PATH:~10,5%会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏移量 10)字符开始的五个字符。如果没有指定长度,则采用默认值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,使用的数字则是环境变量数值长度加上指定的偏移量或长度。%PATH:~-10%会提取 PATH 变量的最后十个字符。%PATH:~0,-2%会提取 PATH 变量的所有字符,除了最后两个。终于添加了延迟环境变量扩充的支持。该支持总是按默认值被停用,但也可以通过 CMD.EXE 的 /V 命令行开关而被启用/停用。请参阅 CMD /?考虑到读取一行文本时所遇到的目前扩充的限制时,延迟环境变量扩充是很有用的,而不是执行的时候。以下例子说明直接变量扩充的问题:set VAR=beforeif "%VAR%" == "before" (set VAR=afterif "%VAR%" == "after" @echo If you see this, it worked)不会显示消息,因为在读到第一个 IF 语句时,BOTH IF 语句中的 %VAR% 会被代替;原因是: 它包含 IF 的文体,IF 是一个复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和"after",这两者永远不会相等。同样,以下这个例子也不会达到预期效果:set LIST=for %i in (*) do set LIST=%LIST% %iecho %LIST%原因是,它不会在目前的目录中建立一个文件列表,而只是将LIST 变量设成找到的最后一个文件。这也是因为 %LIST% 在FOR 语句被读取时,只被扩充了一次;而且,那时的 LIST 变量是空的。因此,我们真正执行的 FOR 循环是:for %i in (*) do set LIST= %i这个循环继续将 LIST 设成找到的最后一个文件。延迟环境变量扩充允许您使用一个不同的字符(惊叹号)在执行时间扩充环境变量。如果延迟的变量扩充被启用,可以将上面例子写成以下所示,以达到预期效果:set VAR=beforeif "%VAR%" == "before" (set VAR=afterif "!VAR!" == "after" @echo If you see this, it worked)set LIST=for %i in (*) do set LIST=!LIST! %iecho %LIST%如果命令扩展被启用,有几个动态环境变量可以被扩展,但不会出现在 SET 显示的变量列表中。每次变量数值被扩展时,这些变量数值都会被动态计算。如果用户用这些名称中任何一个定义变量,那个定义会替代下面描述的动态定义:%CD% - 扩展到当前目录字符串。%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。%CMDEXTVERSION% - 扩展到当前命令处理

器扩展版本号。%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。***********************set************************************************************************if**************************************************执行批处理程序中的条件处理。IF [NOT] ERRORLEVEL number commandIF [NOT] string1==string2 commandIF [NOT] EXIST filename commandNOT 指定只有条件为 false 的情况下,Windows 才应该执行该命令。ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件为 true。string1==string2 如果指定的文字字符串匹配,指定条件为 true。EXIST filename 如果指定的文件名存在,指定条件为 true。command 如果符合条件,指定要执行的命令。如果指定的条件为 FALSE,命令后可跟一个执行 ELSE 关键字后的命令的 ELSE 命令。ELSE 子句必须在 IF 之后出现在同一行上。例如:IF EXIST filename. (del filename.) ELSE (echo filename. missing.)因为 del 命令需要用一个新行终止,以下子句不会有效:IF EXIST filename. del filename. ELSE echo filename. missing由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句也不会有效:IF EXIST filename. del filename.ELSE echo filename. missing如果都放在同一行上,以下子句有效:IF EXIST filename. (del filename.) ELSE echo filename. missing如果命令扩展被启用,IF 会如下改变:IF [/I] string1 compare-op string2 commandIF CMDEXTVERSION number commandIF DEFINED variable command其中, compare-op 可以是:EQU - 等于NEQ - 不等于LSS - 小于LEQ - 小于或等于GTR - 大于GEQ - 大于或等于而 /I 开关(如果指定)说明要进行的字符串比较不分大小写。/I 开关可以用于 IF 的 string1==string2 的形式上。这些比较都是通用的;原因是,如果 string1 和 string2 都是由数字组成的,字符串会被转换成数字,进行数字比较。CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它是在跟与命令扩展有关联的内部版本号比较。第一个版本是 1。每次对命令扩展有相当大的增强时,版本号会增加一个。命令扩展被停用时,CMDEXTVERSION 条件不是真的。如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样,除了它取得一个环境变量,返回的结果是 true。如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL%会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,您会得到其数值。运行程序后,以下语句说明 ERRORLEVEL 的用法:goto answer%ERRORLEVEL%

:answer0echo Program had return code 0:answer1echo Program had return code 1您也可以使用以上的数字比较:IF %ERRORLEVEL% LEQ 1 goto okay如果没有名为 CMDCMDLINE 的环境变量,%CMDCMDLINE%将在 CMD.EXE 进行任何处理前扩充为传递给 CMD.EXE 的原始命令行;否则,您会得到其数值。如果没有名为 CMDEXTVERSION 的环境变量,%CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的字串符表达式;否则,您会得到其数值。**************************************if**************************************************************************for***********************************对一组文件中的每一个文件执行某个特定命令。FOR %variable IN (set) DO command [command-parameters]%variable 指定一个单一字母可替换的参数。(set) 指定一个或一组文件。可以使用通配符。command 指定对每个文件执行的命令。command-parameters为特定命令指定参数或命令行开关。在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable 而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.如果命令扩展被启用,下列额外的 FOR 命令格式会受到支持:FOR /D %variable IN (set) DO command [command-parameters]如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。FOR /L %variable IN (start,step,end) DO command [command-parameters]该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1)。FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]FOR /F ["options"] %variable IN ("string") DO command [command-parameters]FOR /F ["options"] %variable IN ('command') DO command [command-parameters]或者,如果有 usebackq 选项:FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]FOR /F ["options"] %variable IN ("string") DO command [command-parameters]FOR /F ["options"] %variable IN ('command') DO command [command-parameters]filenameset 为一个或多个文件名。继续到 filenameset 中的下一个文件之前,每份文件都已被打开、读取并经过处理。处理包括读取文件,将其分成一行行的文字,然后将每行解析成零或更多的符号。然后用已找到的符号字符串变量值调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开的第一个空白符号。

跳过空白行。您可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个或多个指定不同解析选项的关键字。这些关键字为:eol=c - 指一个行注释字符的结尾(就一个)skip=n - 指在文件开始时忽略的行数。delims=xxx - 指分隔符集。这个替换了空格和跳格键的默认分隔符集。tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号,那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 filenameset中使用双引号扩起文件名称。某些范例可能有助:FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或空格定界符号。请注意,这个 for 程序体的语句引用 %i 来取得第二个符号,引用 %j 来取得第三个符号,引用 %k来取得第三个符号后的所有剩余符号。对于带有空格的文件名,您需要用双引号将文件名括起来。为了用这种方式来使用双引号,您还需要使用 usebackq 选项,否则,双引号会被理解成是用作定义某个要分析的字符串的。%i 专门在 for 语句中得到说明,%j 和 %k 是通过tokens= 选项专门得到说明的。您可以通过 tokens= 一行指定最多 26 个符号,只要不试图说明一个高于字母 'z' 或'Z' 的变量。请记住,FOR 变量是单一字母、分大小写和全局的;而且,同时不能有 52 个以上都在使用中。您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,用单引号将括号之间的 filenameset 括起来。这样,该字符串会被当作一个文件中的一个单一输入行。最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将括号之间的 filenameset 变成一个反括字符串。该字符串会被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进内存,并被当作文件分析。因此,以下例子:FOR /F "usebackq delims==" %i IN (`set`)

DO @echo %i会枚举当前环境中的环境变量名称。另外,FOR 变量参照的替换已被增强。您现在可以使用下列选项语法:~I - 删除任何引号("),扩展 %I%~fI - 将 %I 扩展到一个完全合格的路径名%~dI - 仅将 %I 扩展到一个驱动器号%~pI - 仅将 %I 扩展到一个路径%~nI - 仅将 %I 扩展到一个文件名%~xI - 仅将 %I 扩展到一个文件扩展名%~sI - 扩展的路径只含有短名%~aI - 将 %I 扩展到文件的文件属性%~tI - 将 %I 扩展到文件的日期/时间%~zI - 将 %I 扩展到文件的大小%~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩展到找到的第一个完全合格的名称。如果环境变量名未被定义,或者没有找到文件,此组合键会扩展到空字符串可以组合修饰符来得到多重结果:%~dpI - 仅将 %I 扩展到一个驱动器号和路径%~nxI - 仅将 %I 扩展到一个文件名和扩展名%~fsI - 仅将 %I 扩展到一个带有短名的完整路径名%~dp$PATH:I - 搜索列在路径环境变量的目录,并将 %I 扩展到找到的第一个驱动器号和路径。%~ftzaI - 将 %I 扩展到类似输出线路的 DIR在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名比较易读,而且避免与不分大小写的组合键混淆。**********************************for************************************************************************cmd**************************************启动 Windows 命令解释程序一个新的实例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 命令(见下)/A 使向内部管道或文件命令的输出成为 ANSI/U 使向内部管道或文件命令的输出成为 Unicode/T:fg 设置前景/背景颜色(详细信息,请见 COLOR /?)/E:ON 启用命令扩展(见下)/E:OFF 停用命令扩展(见下)/F:ON 启用文件和目录名称完成字符(见下)/F:OFF 停用文件和目录名称完成字符(见下)/V:ON 将 ! 作为定界符启动延缓环境变量扩展。如: /V:ON 会允许 !var! 在执行时允许 !var! 扩展变量 var。var 语法在输入时扩展变量,这与在一个 FOR 循环内不同。/V:OFF 停用延迟环境扩展。请注意,如果字符串有引号,可以接受用命令分隔符 '&&' 隔开

的多个命令。并且,由于兼容原因,/X 与 /E:ON 相同,/Y 与/E:OFF 相同,并且 /R 与 /C 相同。忽略任何其他命令行开关。如果指定了 /C 或 /K,命令行开关后的命令行其余部分将作为命令行处理;在这种情况下,会使用下列逻辑处理引号字符("):1. 如果符合下列所有条件,那么在命令行上的引号字符将被保留:- 不带 /S 命令行开关- 整整两个引号字符- 在两个引号字符之间没有特殊字符,特殊字符为下列中的一个: <>()@^|- 在两个引号字符之间有至少一个空白字符- 在两个引号字符之间有至少一个可执行文件的名称。2. 否则,老办法是,看第一个字符是否是一个引号字符,如果是,舍去开头的字符并删除命令行上的最后一个引号字符,保留最后一个引号字符之后的文字。如果 /D 未在命令行上被指定,当 CMD.EXE 开始时,它会寻找以下 REG_SZ/REG_EXPAND_SZ 注册表变量。如果其中一个或两个都存在,这两个变量会先被执行。HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun和/或HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun命令扩展是按默认值启用的。您也可以使用 /E:OFF,为某一特定调用而停用扩展。您可以在机器上和/或用户登录会话上启用或停用 CMD.EXE 所有调用的扩展,这要通过设置使用REGEDT.EXE 的注册表中的一个或两个 REG_DWORD 值:HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions和/或HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions到 0x1 或 0x0。用户特定设置比机器设置有优先权。命令行开关比注册表设置有优先权。命令扩展包括对下列命令所做的更改和/或添加:DEL 或 ERASECOLORCD 或 CHDIRMD 或 MKDIRPROMPTPUSHDPOPDSETSETLOCALENDLOCALIFFORCALLSHIFTGOTOSTART (同时包括对外部命令调用所做的更改)ASSOCFTYPE有关特定详细信息,请键入 commandname /? 查看。延迟环境变量扩展不按默认值启用。您可以用/V:ON 或 /V:OFF开关,为 CMD.EXE 的某个调用而启用或停用延迟环境变量扩展。您可以在机器上和/或用户登录会话上启用或停用 CMD.EXE 所有调用的延迟扩展,这要通过设置使用 REGEDT.EXE 的注册表中的一个或两个 REG_DWORD 值:HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion和/或HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion到 0x1 或 0x0。用户特定设置比机器设置有优先权。命令行开关比注册表设置有

优先权。如果延迟环境变量扩展被启用,惊叹号字符可在执行时间,被用来代替一个环境变量的数值。您可以用 /F:ON 或 /F:OFF 开关为 CMD.EXE 的某个调用而启用或禁用文件名完成。您可以在计算上和/或用户登录会话上启用或禁用 CMD.EXE 所有调用的完成,这可以通过使用 REGEDIT.EXE 设置注册表中的下列REG_DWORD 的全部或其中之一:HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionCharHKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar和/或HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionCharHKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar由一个控制字符的十六进制值作为一个特定参数(例如,0x4是Ctrl-D,0x6 是 Ctrl-F)。用户特定设置优先于机器设置。命令行开关优先于注册表设置。如果完成是用 /F:ON 开关启用的,两个要使用的控制符是: 目录名完成用 Ctrl-D,文件名完成用 Ctrl-F。要停用注册表中的某个字符,请用空格(0x20)的数值,因为此字符不是控制字符。如果键入两个控制字符中的一个,完成会被调用。完成功能将路径字符串带到光标的左边,如果没有通配符,将通配符附加到左边,并建立相符的路径列表。然后,显示第一个相符的路径。如果没有相符的路径,则发出嘟嘟声,不影响显示。之后,重复按同一个控制字符会循环显示相符路径的列表。将 Shift 键跟控制字符同时按下,会倒着显示列表。如果对该行进行了任何编辑,并再次按下控制字符,保存的相符路径的列表会被丢弃,新的会被生成。如果在文件和目录名完成之间切换,会发生同样现象。两个控制字符之间的唯一区别是文件完成字符符合文件和目录名,而目录完成字符只符合目录名。如果文件完成被用于内置式目录命令(CD、MD 或 RD),就会使用目录完成。用引号将相符路径括起来,完成代码可以正确处理含有空格或其他特殊字符的文件名。同时,如果备份,然后从行内调用文件完成,完成被调用时位于光标右方的文字会被调用。需要引号的特殊字符是:<space>&()[]{}^=;!'+,`~*****************************cmd*********************************************谢谢大家的支持,非常感谢您已经读到这里,愿您学的开心,学得满意。

相关推荐