电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

cmd.exe更加复杂强大的命令行参数


发布日期:2024/8/25
 

Cmdexe有很多命令行参数具体情况如下

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 设置前景/背景颜色

/E:ON 启用命令扩展;

/E:OFF 停用命令扩展;

/F:ON 启用文件和目录名称完成字符;

/F:OFF 停用文件和目录名称完成字符;

/V:ON 将c作为定界符启动延缓环境变量扩展

/V:OFF 停用延缓的环境扩展

请注意如果字符串有引号可以接受用命令分隔符&&隔开的多个命令并且由于兼容原因/X与/E:ON相同/Y与/E:OFF相同并且/R与/C相同忽略任何其它命令选项

如果指定了/C或/K命令选项后的命令行其余部分将作为命令行处理在这种情况下会使用下列逻辑处理引号字符():

)如果符合下列所有条件那么在命令行上的引号字符将被保留:

不带 /S 命令选项;

整整两个引号字符;

在两个引号字符之间没有特殊字符特殊字符为下列中的一个: <>()@^|;

在两个引号字符之间有至少一个空白字符;

在两个引号字符之间有至少一个可执行文件的名称

)否则老办法是看第一个字符是否是一个引号字符如果是捨去开头的字符并删除命令行上 的最后一个引号字符保留最后一个引号字符之后的文字如果/D未在命令行上被指定当CMDEXE开始时它会寻找以下REG_SZ/REG_EXPAND_SZ注册表变量如果其中一个或两个都存在这两个变量会先被执行

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

命令扩展按默认值是启用的你也可以使用 /E:OFF为某一特定调用而停用扩展你可以在用户登录会话上启用或停用cmdexe所有调用的扩展这要通过设置使用Regeditexe 的注册表中的一个或两个REG_DWORD值:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions到xx

用户特定设置比机器设置有优先权命令行命令选项比注册表设置有优先权

命令行扩展包括对下列命令所做的更改和添加:

Del或EraseColorCD或ChDirMD或MkDirPromptPushdPopdSetSetLocalEnd LocalIFForCallShiftGotoStart(同时包括对外部命令调用所做的更改)As socFtype

有关详细信息请键入HELP 命令名

延迟变量环境扩展不按默认值启用你可以用/V:ON或 /V:OFF命令选项为CMDEXE的某个调用而启用或停用延迟环境变量扩充你可以在机器上或用户登录会话上启用或停用CMD EXE所有调用的完成这要通过设置使用Regeditexe的注册表中的一个或两个REG_DWORD

值:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion到xx用户特定设置比机器设置有优先权命令行命令选项比注册表设置有优先权

如果延迟环境变量扩充被启用惊歎号字符可在执行时间被用来代替一个环境变量的数值

文件和目录名完成不按默认值启用你可以用/F:ON或/F:OFF命令选项为cmdexe的某个调用而启用或停用文件名完成你可以在机器上或用户登录会话上启用或停用cmdexe所有调用的完成这要通过设置使用Regeditexe 的注册表中的一个或两个REG_DWORD值:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar

由一个控制字符的十六进制值作为一个特定参数(例如x是CtrlDx是 CtrlF)用户特定设置优先于机器设置命令行命令选项优先于注册表设置

如果完成是用/F:ON命令选项启用的两个要使用的控制符是:目录名字完成用CtrlD文件名完成用CtrlF要停用注册表中的某个字符请用空格(x)的数值因为此字符不是控制字符

如果键入两个控制字符中的一个完成会被调用完成功能将路径字符长带光标的左边如果没有通配符将通配符附加到左边并建立相符的路径列表然后显示第一个相符的路径如果没有相符的路径则发出嘟嘟声不影响显示之后重复按同一个控制字符会循环显示相符路径的列表将 Shift 键跟控制字符同时按下会倒着显示列表如果对该行进行了任何编辑并再次按下控制字符保存的相符路径的列表会被丢弃新的会被生成如果在文件和目录名完成之间命令选项会发生同样现象两个控制字符之间的唯一区别是文件完成字符符合文件和目录名而目录完成字符只符合目录名如果文件完成被用于内置式目录命令(CDMD或RD)就会使用目录完成

将引号用相符路径括起来完成代码可以正确处理含有空格或其它特殊字符的文件名同时如果备份然后从行内调用文件完成完成被调用是位于光标右方的文字会被丢弃

编者按:前边讲了这么多主要是从原理上介绍了微软的一种命令扩展和路径扩展至于

它要完成的功能对于我们大多数电脑爱好这来说是很有趣并且是实用价值的从小编在http

://查询的资料得知自从Windows NT 以来Windows便具有了和Linux一样的命令行自动补全的功能不信将HKEY_LOCAL_MACHINE\Software\Microsoft\ Comma

nd Prosessor\CompletionChar的键值改为然后切换到命令行窗口输入cd c:\wind然后按一个Tab试一下呵呵……系统自动为你输入了cd c:\windows

一个有趣的Bug

在命令行(甚至在其它如Word等图形界面编辑器中!)调用任何一种中文输入法后如果在全角中文标点状态下输入一次……(可按Shift+^直接从键盘输入)再输入大写的任意英文字母或按Shift键输入某些特殊符号则每个字符后面会自动添加一个W…%…不知微软此举是何用意?笔者死活想不出这种功能有何用处只能解释为是一个无关紧要的Bug

由以上可以看出传统的DOS在Win时代并不是被完全抛弃而是被发扬光大它已经由历史上一个独当一面的操作系统转变为Win操作系统的有机组成部分有道是尺有所短寸有所长命令行与图形界面相比自有其独特魅力我们不应忘记老DOS更不应忽视对命令行操作的了解和使用许多时候一个并不怎么复杂的操作只需用命令行就能既快又好地完成又为什么非得要寻找(甚至是开发)一个专门的图形界面的工具呢?

上一篇:IE8三大可靠性新功能解析

下一篇:Google创始人称微软Windows已经过时