日期:2014-05-17  浏览次数:20840 次

WindowsNT Command Shell 简记和参考资料
文章内容基本上试摘自以下两篇文章,仅当自学,具体的例子可以参看下边两篇文章。

WindowsXP Command Shell Overview
The WindowsNT Command Shell

另外一个十分有用的网站:http://commandwindows.com/
一些高级用法的语法说明和例子:http://ss64.com/nt/syntax.html
还有WMIC:Windows Management Instrumentation Command-line

前言
这里是cmd.exe本身的帮助
NT系统中的command.com是为了兼容MSDOS的16位程序(壳),它会自动启动并发送命令给cmd.exe执行。
命令行帮助(/?)中的语法:
  • … 表示可以重复的单元
  • [] 表示可选
  • {} 表示可供选择的集合

在cmd.exe程序中的编辑命令
  • F4 随着你的下一个输入,从当前光标处删除至行尾,并插入新的输入
  • F7 弹出命令历史菜单(可以继续使用F9,选择命令序号)
  • F8 先输入你想要调用的命令(须存在于历史中),再按F8进行快速搜索匹配
  • Tab 自动完成键
  • Ctrl+D 自动完成目录
  • Ctrl+F 自动完成文件名

命令行的语法结构
Prompt + 命令名 + 参数表(通常使用空格做分隔符)
如果参数中含有分隔符就需要用双引号,如果有双引号就再套一层双引号

多个命令和条件执行:
  • & 两个命令的连接符
  • && 当前一个命令成功才执行第二个命令
  • || 当前一个命令失败才执行第二个命令
  • () 命令嵌套,另一种做法是使用cmd命令,但是需要多一次exit
  • ;或, 命令的参数分隔符

特殊字符:
  • & 命令连接符
  • | 管道符
  • () 嵌套符
  • <> 管道符
  • ^ 转义符
  • " 字符串的开始,例如new^&name等价于"new&name"

环境变量
分为系统和本地环境变量,这里的系统指作用于整个操作系统的环境变量,而本地环境变量仅作用于此cmd.exe实例,cmd.exe将自动集成其父进程的环境变量。这里是WinNT系统中的系统定义环境变量。下边按加载顺序列出环境变量(同文件的搜索路径):
1.Built-in system variables
2.System variables found in the HKEY_LOCAL_MACHINE hive
3.Local variables found in the HKEY_CURRENT_USER hive
4.All environment variables and paths set in the Autoexec.bat file
5.All environment variables and paths set in a logon script (if present)
6.Variables used interactively in a script or batch file

命令行输出结果的控制
  • REM 注释指令,后边可跟任意字符,本身什么也不做
  • CLS 清屏
  • COLOR 调色
  • TITLE 命令行的窗口标题
  • ECHO 命令(回馈)显示的全局开关
  • @ 当行echo off(写在其后的脚本命令在执行时会被隐藏起来)

管道(重定向)
命令输入默认为键盘输入,命令输出默认为命令窗口输出,命令错误输出默认为命令窗口输出。这是命令的三种流,shell提供管道,可以使这三种流重定向。详细说明看这里
  • >file 输出到指定文件,也可使用设备名
  • >>file 输出,如果文件已存在就追加在其后
  • <file 从指定文件输入
  • 2>file 从定向错误输出到指定文件,之前文件中的内容会丢失
  • 2>&1 从定向错误输出到当前命令的输出环境
  • cmd1 | cmd2 cmd1的输出作为cmd2的输入

命令过滤(Command Filter)
尽管可以使用管道,但有些命令的最高效的执行方式莫过于使用命令过滤,即仅提取命令结果中自己需要的那个部分。WindowsNT提供了三种过滤器:
  • MORE 用于将命令结果分页,dir | more,  more < list.txt
  • SORT 将命令结果按字母-数字序排序,dir | sort /+3,  find "Jones" maillst.txt | sort
  • FIND 过滤包含特殊字串的行, dir | find "<DIR>" /c,  find "Pacific Rim" < trade.txt > nwtrade.txt

使用变量
变量以%开始,如把下边命令存为.bat文件 “makelist.bat”:
dir %1 >  %2
在命令行中输入: \文件路径\makelist SrcFolderPath DstFolderPath\list.txt
SrcFolderPath会取代%1, DstFolderPath会取代%2。
更多信息请参考: set /?

使用条件表达式
内容候补,更多信息请参考:
  • if /?, 仔细看帮助你会发现这里可以使用字符串比较
  • for /?,仔细看看帮助,for应该是最有用的命令之一,字符串、路径解析都用它

字符串处理
注意,后两种情况中使用了负号'-'
  • %variable:~num_chars_to_skip%
  • %variable:~num_chars_to_skip,num_chars_to_keep%
  • %variable:~num_chars_to_skip, -num_chars_to_skip%
  • %variable:~-num_chars_to_skip,num_chars_to_keep%

例子: mkdir "%date:~0,3% %date:~4,2%-%date:~7,2%-