提示
整理 Windows 常用 cmd 命令,通过命令行快捷执行操作,可以提高操作系统使用效率,也为脚本封装提供基础支持。
概述
cmd
是 command
的缩写,即命令提示符,是在 OS / 2
、Windows CE
与 Windows NT
平台为基础的操作系统下的 "MS-DOS"
方式。
根据解析方式不同大致分为两类:
内部命令:即内置在命令行解释器中的命令,不需要额外的程序,如:
cd
、dir
命令等。外部命令:是以可执行文件形式提供命令支持,一般都位于
C:\Windows\System32
或C:\Windows\SysWOW64
目录下,类型为应用程序
或MS-DOS 应用程序
,意味着该程序必须存在,否则 Windows 是找不到该命令的,如:xcopy
、format
、tree
命令等。
使用技巧
- 每条命令输入完成后必须回车,才开始运行,并得到运行结果。命令行解释器把提示符
">"
和回车键间的字符串视为一条命令。如果这字符串确实符合 Windows 命令语法,就执行它,执行完后又回到提示符状态,否则命令行解释器给出错误信息。 - 想快速学习命令,可以输入
"命令名 /?"
或"help 命令名"
来查看命令的联机帮助。
常用 DOS 功能键
快捷键 | 作用描述 |
---|---|
Home | 移动光标到一行的头部 |
End | 移动光标到一行的尾部 |
Del | 删除当前一个字符 |
Backspace | 向前删除一个字符 |
Esc | 删除当前一行字符、作废当前行 |
Ctrl + C | 强行终止当前命令或程序的执行 |
Shift + Insert | 将剪切板内容插入 |
↑ / ↓ | 查看历史命令 |
Tab | 自动补全 |
Alt + Enter | 全屏 |
常用命令
更多命令请参考:Windows 命令 。
文件目录操作
整理文件、目录相关操作命令,包含:cd、dir、tree、ren、md、rd、copy、xcopy、move、del、replace、mklink、attrib、assoc、ftype、forfiles、type、more 等。
cd
change directory
的缩写,显示当前目录的名称或更改当前目录。
cd # 显示当前目录
cd.. # 进入父级目录
cd /d D: # 进入上次 D 盘所在目录
D: # 同上,进入上次 D 盘所在目录
cd /d D:\ # 进入 D 盘根目录
cd D: # 显示上次 D 盘所在的目录
cd /d D:\Repository # 进入 D:\Repository 目录
cd Node\yarn\global # 进入当前目录下的 Node\yarn\global 文件夹
dir
directory
的缩写,显示目录的文件和子目录的列表。更多参数用法参考:dir 命令
dir # 显示当前目录中的文件夹及文件
dir /b # 显示当前目录中的文件夹及文件名称
dir /p # 分页显示当前目录中的文件夹及文件
dir /ad # 显示当前目录中的文件夹
dir /a-d # 显示当前目录中的文件
dir D:\Repository # 显示 D:\Repository 目录中的内容
dir readme.txt # 显示当前目录中 readme.txt 的信息
dir /s # 递归显示当前目录中的内容
dir read* # 显示当前目录下以 read 开头的文件及文件夹信息
dir /ah /os # 只显示当前目录中隐藏的文件及文件夹,并按照文件大小升序排序
dir c:\temp /s /b | find "CPU" # 查找包含字符串 CPU 的目录中的文件名
tree
以图形方式显示路径或驱动器中磁盘的目录结构。更多参数用法参考:tree 命令
tree # 显示当前路径下的树形目录结构
tree \ # 显示当前盘符下的树形目录结构
tree D:\ /f | more # 一屏显示 D 盘下所有目录中的文件
ren
相当于
rename
命令,重命名文件或目录。
ren index.txt index.md # 将当前路径下的 readme.txt 文件重命名为 readme.md
ren D:\chap10 part10 # 将 D 盘下的 chap10 文件夹重命名为 part10
ren *.txt *.doc # 将当前目录下所有 .txt 扩展名文件更改为 .doc 扩展名
md
相当于
mkdir
命令,创建目录或子目录。 命令扩展(默认情况下启用)允许使用单个 md 命令在指定路径中创建中间目录。
md movie music # 在当前目录下创建 movie 和 music 文件夹
md D:\Test\music # 创建 D:\Test\music 目录,如果中间目录不存在也会创建
md \Test\movie # 在当前盘符根目录下,创建目录树 \Test\movie
rd
提醒
- 无法删除包含文件(包括隐藏文件或系统文件)的目录。 如果尝试这样做,将显示以下消息:
The directory is not empty
- 不能使用 rd 命令删除当前目录。
相当于
rmdir
命令,删除目录。
rd movie # 删除当前目录下的 movie 空文件夹
rd /s /q D:\Test # 使用安静模式删除 D:\Test 下的目录树(包括所有文件)
copy
将一个或多个文件从一个位置复制到另一个位置。更多参数用法参考:copy 命令
copy abc.doc D:\Doc # 将当前目录下的 abc.doc 拷贝至 D:\Doc 下
copy Test D:\Doc # 将当前目录下的 Test 文件夹拷贝至 D:\Doc 下
copy a.doc D:\Doc\b.doc # 将当前目录下的 a.doc 拷贝至 D:\Doc 下并重命名为b.doc
copy /Y abc.doc D:\Doc # 将当前目录下的 abc.doc 拷贝至 D:\Doc 下,如果存在直接覆盖
copy abc.doc + # 复制文件到自己,实际上是修改了文件日期
copy /Y a.txt + b.txt c.txt # 将当前目录下的 a.txt 与 b.txt 内容合并写入 c.txt
xcopy
更强大的复制命令,复制文件和目录,包括子目录。更多参数用法参考:xcopy 命令
# 将 D:\Test\movie 中的所有内容拷贝到 D:\Test\music\ 中
xcopy D:\Test\movie D:\Test\music\ /y /h /e /f /c
# 将 D:\Test\movie 中2022年8月8日后更改的文件拷贝到 D:\Test\music\ 中
xcopy D:\Test\movie D:\Test\music\ /d:08-08-2022
xcopy A: B: /s /e # 将 A 盘的所有文件及子目录复制到 B 盘
xcopy A: B: /s /e /h # 将 A 盘的所有文件及子目录(包含系统、隐藏文件)复制到 B 盘
move
将一个或多个文件从一个目录移动到另一个目录。
move *.png jpeg # 将当前目录下的 png 图片移动到当前目录下 jpeg 文件夹(询问覆盖)
move /Y *.png jpeg # 将当前目录下的 png 图片移动到当前目录下 jpeg 文件夹(直接覆盖)
# 将当前目录下的 a.png 移动到 D:\Test 目录下,并重命名为 b.png
move a.png D:\Test\b.png
# 将当前目录的 Test 文件夹移动到 D 盘下的 NewTest 文件夹(移动 Test 文件夹,并重命名)
move Test D:\NewTest
del
删除一个或多个文件。 此命令执行与
erase
命令相同的操作。
# /p 提示用户确认
# /f 强制删除只读文件
# /s 从当前目录和所有子目录中删除指定的文件。 显示正在删除的文件的名称。
# /q 指定安静模式。 系统不会提示你确认删除。
del work # 删除当前目录下的 work 文件夹中的所有非只读文件
del /f work # 删除当前目录下的 work 文件夹中的所有文件
del *.bat # 删除当前目录下中扩展名为 .bat 的所有文件
# 删除当前目录下的 Test 文件夹中所有文件及 D:\Test2 中所有扩展名为 .doc 的文件
del /f /s /q Test D:\Test2\*.doc
# /ar、/ah、/as、/aa 分别表示删除只读、隐藏、系统、存档文件
# /a-r、/a-h、/a-s、/a-a 分别表示删除除只读、隐藏、系统、存档以外的文件
del /ar *.* # 删除当前目录下所有只读文件
del /a-s *.* # 删除当前目录下除系统文件以外的所有文件
replace
替换目录中的现有文件。 如果与
/a
选项一起使用,此命令会向目录添加新文件,而不是替换现有文件。更多参数用法参考:replace 命令
# 使用 D:\Test 下的 a.jpeg 强制替换 D:\Test2 下的 b.jpeg
replace D:\Test\a.jpeg D:\Test2\b.jpeg
mklink
创建目录或文件符号链接或硬链接。
# /d 创建目录符号链接。 默认情况下,此命令创建文件符号链接。
# /h 创建硬链接而不是符号链接。
# /j 创建目录交叉点。
# 创建 D 盘下的 Users 目录联接到 C 盘,并命名为 Users
mklink /j "C:\Users" "D:\Users"
attrib
显示、设置或删除分配给文件或目录的属性。 更多参数用法参考:attrib 命令
# A:存档 R:只读 S:系统 H:隐藏
attrib a.jpeg # 查看当前目录下 a.jpeg 的属性
attrib -R a.jpeg # 去除 a.jpeg 的只读属性
attrib +H Test # 隐藏 Test 文件夹
assoc
显示或修改文件扩展名关联。
assoc # 显示所有文件扩展名关联
assoc .txt # 显示 .txt 代表的文件类型,结果显示 .txt=txtfile
assoc .exe # 显示 .doc 代表的文件类型
assoc .txt=txtfile # 设置 .txt 的文件类型关联
assoc .bak= # 删除 .bak 扩展名文件类型关联
assoc .=txtfile # 将没有扩展名的文件关联到文本文件
ftype
显示或修改文件扩展名关联中使用的文件类型。
ftype # 显示所有文件类型关联的执行程序参数
ftype exefile # 显示 exefile 类型关联的命令行,结果显示 exefile="%1" %*
ftype example= # 删除名为 example 的文件类型的打开命令参数
# 设置 txtfile 类型关联的命令为:C:\Windows\notepad.exe %1
ftype txtfile=C:\Windows\notepad.exe %1
forfiles
在文件或文件集上选择并运行命令。 此命令最常用于批处理文件。更多参数用法参考:forfiles 命令
# 列出 D 盘下所有目录
forfiles /P D:\ /S /M * /C "cmd /c if @isdir==TRUE echo @file is a directory"
# 列出当前目录中早于2022年1月1日的每个已过时文件
forfiles /S /M *.* /D -01/01/2022 /C "cmd /c echo @file is outdated."
# 列出当前目录中所有文件的扩展名
forfiles /S /M *.* /C "cmd /c echo The extension of @file is 0x09@ext"
type
type
是显示文本文件内容的内置命令。 使用type
命令将只查看文本文件而不对其进行修改。
type D:\Test\a.txt # 查看 D:\Test\ 目录下 a.txt 的文本内容
type conf.ini # 查看当前目录下 conf.ini 的文本内容
type D:\Test\b.txt | more # 分页显示 D:\Test 目录下 b.txt 的文本内容
more
一次显示一个输出屏幕。更多参数用法参考:more 命令
more conf.ini # 逐屏展示当前目录下 conf.ini 的文本内容(空格:下一屏;q:退出)
注册表命令
命令 | 功能说明 |
---|---|
reg add | 将新的子项或项添加到注册表中。 |
reg compare | 比较指定的注册表子项或项。 |
reg copy | 将注册表项复制到本地或远程计算机上的指定位置。 |
reg delete | 从注册表中删除子项或条目。 |
reg export | 将本地计算机的指定子项、项和值复制到文件,以便传输到其他服务器。 |
reg import | 将包含导出的注册表子项、条目和值的文件内容复制到本地计算机的注册表中。 |
reg load | 将保存的子项和项写入注册表中的不同子项。 |
reg query | 返回位于注册表中指定子项下的下一层子项和条目的列表。 |
reg restore | 将保存的子项和项写回到注册表。 |
reg save | 将注册表的指定子项、项和值的副本保存在指定的文件中。 |
reg unload | 删除使用 reg load 操作加载的注册表部分。 |
示例如下,更多参数用法参考点击如上命令链接跳转查看:
# 强制添加一条开机启动 D:\Tools\app.exe 程序的注册表项
reg add "HKLM\SoftWare\Microsoft\Windows\CurrentVersion\Run" /v app /t REG_SZ /d "D:\Tools\app.exe" /f
# 强制删除名为 app 的注册表项
reg delete "HKLM\SoftWare\Microsoft\Windows NT\CurrentVersion\Run" /v app /f
# 强制复制 winmine 下所有的子项与值到 winminebk 中
reg copy "HKCU\SoftWare\Microsoft\Winmine" "HKCU\SoftWare\Microsoft\Winminebk" /s /f
# 导入 D:\Test\Winmine.reg 文件到注册表
reg import D:\Test\Winmine.reg
# 导出 Winmine 下所有的子项与值到 D:\Test\Winminebk.reg 中
reg export "HKCU\SoftWare\Microsoft\Winmine" D:\Test\Winminebk.reg
# 查询 .dsw 默认值
reg query HKCR\.dsw /ve
net 命令
更多参数用法参考:操作系统上的 Net 命令
命令 | 功能说明 |
---|---|
net accounts | 将用户账户数据库升级并修改所有账户的密码和登录等 |
net computer | 从域数据库中添加或删除计算机。 |
net config | 显示当前运行的可配置服务,或显示并更改某服务的设置。 |
net continue | 重新激活挂起的服务。 |
net file | 显示某服务器上所有打开得共享文件名及锁定文件数。 |
net group | 在 Windows NT Server 域中添加、显示或更改全局组。 |
net help | 提供网络命令列表及帮助主题,或提供指定命令或主题的帮助。 |
net helpmsg | 提供Windows NT 错误信息的帮助。 |
net localgroup | 添加、显示或更改本地组。 |
net pause | 暂停正在运行的服务。 |
net session | 列出或断开本地计算机和与之连接的客户端的会话。 |
net share | 创建、删除或显示共享资源。 |
net start | 查看已经启动的服务 |
net statistics | 显示本地工作站或服务器服务的统计记录。 |
net stop | 停止 Windows NT 网络服务。 |
net time | 使计算机的时钟与另一台计算机或域的时间同步。 |
net use | 连接计算机或断开计算机与共享资源的连接,或显示计算机的连接信息。 |
net user | 添加或更改用户账号或显示用户账号信息。 |
net view | 显示域列表、计算机列表或指定计算机的共享资源列表。 |
net start # 查看已启动的服务
net start "Task Scheduler" # 开启任务计划服务
net stop "Task Scheduler" # 关闭任务计划服务
net start dnscache # 开启 DNS 缓存服务
net stop dnscache # 关闭 DNS 缓存服务
net share # 查看当前用户下的共享目录
net share workFile /delete # 取消名为 workFile 的共享状态
net share xxx=D:\Test\Share # 将 D:\Test\Share 设为共享,并取名为 xxx
net share ipc$ # 开启 ipc$ 共享
net share ipc$ /del # 删除 ipc$ 共享
net share D$ /del # 删除 D 盘共享
net use \\192.168.1.108\ipc$ " " /user:" " # 建立 192.168.1.108 的 ipc 空链接
# 直接登录后建立 192.168.1.108 的 ipc 非空链接
net use \\192.168.1.108\ipc$ "123456" /user:"administrator"
# 登录后映射 192.168.1.108 的 D 盘到本地为 H 盘
net use H:\\192.168.1.108\D$ "123456" /user:"administrator"
net use \\192.168.1.108\ipc$ /del # 删除 ipc 链接
net use H: /del # 删除本地 H 盘映射
net view # 查看局域网内开启了哪些共享
net view \\192.168.1.108 # 查看 192.168.1.108 的机器在局域网开启了哪些共享
net time \\127.0.0.1 # 查看本地机器的日期和时间
net time \\localhost # 查看本地机器的日期和时间
net time \\192.168.1.108 # 查看 192.168.1.108 机器的日期和时间
# 设置本地计算机时间与 192.168.1.108 主机的时间同步,加上参数 /yes 可以取消确认消息
net time \\192.168.1.108 /set
net user # 查看当前机器上的用户
net user Administrator # 查看当前机器上 Administrator 用户的信息
net user Guest /active:yes # 启用 Guest 用户
net user dev 123456 /add # 新建一个名为 dev ,密码为 123456 的用户
net user dev /del # 删除名为 dev 的用户
# 把名为 dev 的用户添加到管理员用户组中,使其具有管理员权限
net localgroup administrators dev /add
网络命令
整理网络相关操作命令,包含:ping、ipconfig、nslookup、netstat、tracert、pathping、route、telnet、ftp、arp、at 等。
ping
通过发送 Internet 控制消息协议 (ICMP) 回显请求消息,验证与另一台 TCP/IP 计算机的 IP 级别连接情况。 更多参数用法参考:ping 命令
ping baidu.com # 测试与百度服务器的连接情况
ping DESKTOP-Q10LOFP # 测试机器名称 DESKTOP-Q10LOFP 的连接情况
ping 162.255.119.253 # 测试与 ip 为 162.255.119.253 的连接情况
# 向 baidu.com 发送 10 次 65500 字节的 ping
ping -l 65500 -n 10 http://baidu.com
ping -n 6 127.0.0.1 # 对当前主机执行 6 次 ping 操作
ping -t baidu.com # 不断的测试 baidu 服务器的连接情况
ipconfig
显示所有当前的 TCP/IP 网络配置值,并刷新动态主机配置协议 (DHCP) 和域名系统 (DNS) 设置。 更多参数用法参考:ipconfig 命令
ipconfig /all # 查看本地 IP 地址等详细信息
ipconfig /displaydns # 显示本地 DNS 缓存的内容
ipconfig /flushdns # 清除本地 DNS 缓存的内容
nslookup
显示可用于诊断域名系统 (DNS) 基础结构的信息。更多参数用法参考:nslookup 命令
nslookup www.cnblogs.com # 获取 baidu.com 的域名解析
nslookup -d https://www.cnblogs.com # 打印 www.cnblogs.com 的域名解析所有记录
netstat
显示活动的 TCP 连接数、计算机侦听的端口、以太网统计信息、IP 路由表、IPv4 统计信息,以及 IPv6 统计信息。 更多参数用法参考:netstat 命令
netstat -a # 查看开启了哪些端口
netstat -n # 查看端口的网络连接情况
netstat -v # 查看正在运行的工作
netstat -p tcp # 查看 tcp 协议的使用情况
netstat -e -s # 显示以太网及所有协议统计信息
netstat -o 5 # 每 5 秒显示一次活动的 TCP 连接数和进程 ID
netstat -n -o # 使用数字形式显示活动的 TCP 连接数和进程 ID
tracert
此诊断工具通过向目标发送 Internet 控制消息协议 (ICMP) 回显请求或 ICMPv6 消息,并以递增的生存时间 (TTL) 字段值来确定到达目标的路径。更多用法参考:tracert 命令
tracert 162.255.119.253 # 查看本机到达 162.255.119.253 的路由路径
# 跟踪名为 corp7.microsoft.com 的主机路径,并阻止每个 IP 地址解析为其名称
tracert /d corp7.microsoft.com
pathping
提供源和目标之间中间跃点的网络延迟和网络丢失的信息。 更多用法参考:pathping 命令
pathping /n baidu.com # 跟踪 baidu.com 服务器中间路由器 IP 地址
route
显示和修改本地 IP 路由表中的项。 更多用法参考:route 命令
route print # 显示 IP 路由表的全部内容
route print 10.* # 显示 IP 路由表以 10 开头的路由
# 添加默认网关地址 192.168.12.1 的默认路由
route add 0.0.0.0 mask 0.0.0.0 192.168.12.1
# 添加指向目标 10.41.0.0(子网掩码为 255.255.255.0 且下一个跃点地址为 10.27.0.1)的路由
route add 10.41.0.0 mask 255.255.0.0 10.27.0.1
route delete 10.* # 删除 IP 路由表中以 10 开头的所有路由
telnet
提示
必须先安装 telnet 客户端软件,然后才能运行此命令。telnet 命令不支持 UDP 端口检测,有关更多信息,请参阅 安装 telnet。
与运行 telnet 服务器服务的计算机通信。 更多参数用法参考:telnet 命令
telnet telnet.microsoft.com # 使用 telnet 连接到运行 telnet 服务的服务器
telnet 162.255.119.253 80 # 探测 162.255.119.253 是否使用 TCP 协议监听 80 端口
ftp
在运行文件传输协议 (ftp) 服务器服务的计算机之间双向传输文件。 更多用法参考:ftp 命令
# 连接 FTP 服务器(端口号21),提示输入用户名及密码,连接成功后可以键入?来查看帮助说明
ftp 162.255.119.253
arp
显示和修改地址解析协议 (ARP) 缓存中的条目。 更多用法请参考:arp 命令
arp /a # 显示所有接口的 arp 缓存表
arp /a /n 10.0.0.99 # 显示分配了 IP 地址 10.0.0.99 的接口的 arp 缓存表
# 添加将 IP 地址 10.0.0.80 解析为物理地址 00-AA-00-4F-2A-9C 的静态 arp 缓存条目
arp /s 10.0.0.80 00-AA-00-4F-2A-9C
at
将命令和程序计划在指定的时间和日期在计算机上运行。 仅当计划服务正在运行时,才能使用 at。更多用法参数参考:at 命令
at # 查看所有计划任务
at /delete /yes # 停止所有计划任务(不需要确认)
at 1 # 开启 ID 为 1 的计划任务
at 1 /delete /yes # 停止 ID 为 1 的计划任务(不需要确认)
# 到 12:42,电脑会出现 “系统关机” 对话框,并默认 30 秒延时自动关机
at 12:42 shutdown –s –t30
# 将目录结构输出至 log.out 文件,如果命令不是exe文件,必须在命令前加上 cmd /c
at cmd /c dir > c:\log.out
进程命令
tasklist
显示本地计算机或远程计算机上当前正在运行的进程列表。 更多参数参考:tasklist 命令
tasklist # 显示当前运行的进程信息
# 列出进程ID 大于 1000 的所有任务,并将它们以 csv 格式展示
tasklist /v /fi "PID gt 1000" /fo csv
tasklist | find /v /i "agent" # 查找包含 agent 所有正在运行的进程
taskkill
结束一个或多个任务或进程。 可以通过进程 ID 结束进程。更多参数使用参考:taskkill 命令
taskkill /im notepad.exe # 结束名为 notepad.exe 的进程
taskkill /pid 1234 # 结束 pid 为 1234 的进程及子进程
taskkill /f /im cmd.exe /t # 强制结束名为 cmd.exe 的进程以及子进程
文本查找
find
在一个或多个文件中搜索文本字符串,并显示包含指定字符串的文本行。更多参数用法参考:find 命令
# 显示包含 "pencil sharpener" 字符串的 pencil.md 中的所有行
find "pencil sharpener" pencil.md
# 在当前目录中搜索扩展名为 .bat 且包含忽略大小写字符串 PROMPT 的文件
find /i "PROMPT" *.bat
find /C "exe" 1.txt # 只显示在 1.txt 文件中查找到 exe 字符串的次数
find /v "exe" 1.txt # 显示未在 1.txt 文件中未包含 exe 字符串的行
findstr
搜索文件中的文本模式。更多参数用法参考:findstr 命令
findstr "hello world" 1.txt # 在 1.txt 文件中搜索 hello 或 world
findstr /c:"hello world" 1.txt # 在 1.txt 文件中搜索 hello world
# 在 1.txt 文件中搜索 hello world,并在每行结果前打印出 1.txt:
# 注:findstr 只有在 2 个及以上文件中搜索字符串时才会打印出每个文件的文件名
findstr /c:"hello world" 1.txt nul
# 不区分大小写,在当前目录和所有子目录中的所有文件中的 hello
findstr /s /i "Hello" *.*
findstr "^[0-9][a-z]" 1.txt # 在 1.txt 中搜索以 1 个数字 +1 个小写字母开头子串的行
系统命令
说明
整理系统相关操作命令,包含:echo、set、path、ver、vol、label、time、date、title、prompt、print、call、start、exit、pause、 color、mode con、systeminfo、wmic、logoff、shutdown、regsvr32、format、chkdsk、subst、cmdkey、cscript 等。
echo
显示消息或者打开或关闭命令回显功能。
echo # 查看 echo 开启状态
echo. # 输出一个"回车换行",空白行
echo off # 后续所有命令在执行前,不打印出命令的内容
echo on # 后续所有命令在执行前,打印出命令的内容
echo 123 # 输出 123 到终端
echo "hell world" # 输出 hello world 字符串到终端
# 防止批处理文件所有命令(包括 echo off 命令)显示在屏幕上,在批处理文件的第一行中添加
@echo off
# 每个命令运行结束,可以用这个命令行格式查看返回码;
# 默认值为0,一般命令执行出错会设errorlevel为1
echo %errorlevel%
echo test > p1.txt # 输出test的字符串到当前目录中的p1.txt文件中(以覆盖的方式)
set (environment variable)
显示、设置或删除 cmd.exe 环境变量。更多用法参考:set (environment variable) 命令
set # 显示所有的环境变量(包括系统变量和用户变量)
set path # 查看 path 的环境变量值
set path= # 清空 path 的环境变量值
set path=%path%;D:\execute # 在环境变量 path 中添加 D:\execute
set p=xxxx # 设置变量 p ,赋值为 xxxx
echo %p% # 打印变量 p ,输出赋值内容
path
在 PATH 环境变量中设置命令路径,指定用于搜索可执行 (.exe) 文件的目录集。
path # 显示当前 path 变量的值
path; # 清除所有搜索路径设置并指示 cmd.exe 只在当前目录中搜索
path D:\xxx;%PATH% # 将 D:\xxx 路径添加到 path 中
cls
清除命令提示符窗口。
cls # 清除命令窗口打印信息
ver
显示当前操作系统版本号。
ver # 显示当前系统版本号
vol
显示磁盘卷标签和序列号(如果存在)。
vol # 显示当前分区卷标
vol D: # 显示 D 盘分区卷标
label
创建、更改或删除磁盘的卷标(即名称)。更多用法参考:label 命令
label # 显示当前分区卷标,同时提示输入新卷标
label C:System # 设置 C 盘的卷标为 System
time
显示或设置系统时间。
time # 显示当前时间,同时提示输入新时间
time /t # 显示当前时间,而不是提示输入新时间
date
显示或设置系统日期。
date # 显示当前日期,同时提示输入新日期
date /t # 显示当前日期,不提示输入新日期
title
为命令提示符窗口创建标题。
title 标题名称 # 修改当前 cmd 窗口标题栏文字
prompt
更改 cmd.exe 命令提示符,包括显示所需的任何文本,例如当前目录的名称、时间日期或 Microsoft Windows 版本号。
prompt $d$s$s$t$_$g # 修改命令行提示符为两行(一行时间,一行大于号)
prompt --$g # 修改命令行提示符为 -->
prompt $p$g # 修改为默认值
print
将文本文件发送到打印机。
print /d:lpt2 report.txt # 将当前目录的 report.txt 文件发送到本地的 lpt2 打印机
# 将位于 D:\Test\report.txt 的文件,发送到 /d:\copyroom 服务器上的 printer1 打印队列
print /d:\\copyroom\printer1 D:\Test\report.txt
call
从另一个批处理程序调用一个批处理程序,而不停止父批处理程序。
call checknew # 从另一个批处理程序运行 checknew.bat 脚本
call checknew %1 %2 # 从另一个批处理程序运行 checknew.bat 脚本,并传入参数
start
启动单独的命令提示符窗口以运行指定的程序或命令。更多用法参考:start 命令
start # 启动一个新的命令窗口
start /max notepad.exe # 最大化窗口运行记事本
start /min calc.exe # 最小化窗口运行计算器
start tasklist # 启动一个新的命令窗口,并运行 tasklist
start explorer E:\ # 调用资源管理器打开 E 盘
start run.bat # 启动执行 run.bat 脚本
exit
退出命令解释器或当前的批处理脚本。
exit 0 # 退出当前命令窗口
exit /b 1 # 退出当 bat 脚本,并将 ERRORLEVEL 系统变量设置为 1
pause
暂停批处理程序的处理,显示提示,
Press any key to continue . . .
pause # 暂停批处理程序,并显示出:请按任意键继续....
color
更改当前会话的命令提示符窗口中的前景色和背景色。
控制台输出的颜色属性如下:
参数 | 颜色 | 参数 | 颜色 |
---|---|---|---|
0 | 黑色 | 8 | 灰色 |
1 | 蓝色 | 9 | 淡蓝色 |
2 | 绿色 | A | 淡绿色 |
3 | 浅绿色 | B | 淡浅绿色 |
4 | 红色 | C | 淡红色 |
5 | 紫色 | D | 淡紫色 |
6 | 黄色 | E | 淡黄色 |
7 | 白色 | F | 亮白色 |
# 语法示例: color [[<b>]<f>]
color # 恢复到缺省设置
color 02 # 将背景设置为黑色,字体设置为绿色
mode con
显示模式,更改命令提示符屏幕缓冲区大小。
# 设置命令窗口颜色为 9F ,大小:200 行,60 列
mode con cols=200 lines=60 & color 9f
systeminfo
显示有关计算机及其操作系统的详细配置信息,包括操作系统配置、安全信息、产品 ID 和硬件属性(例如 RAM、磁盘空间和网卡)。更多参数用法参考:systeminfo 命令
systeminfo # 查看当前计算机配置信息
systeminfo /s srvmain # 查看名为 srvmain 的计算机的配置信息
# 查看远程 maindom 域中 srvmain2 计算机的配置信息
systeminfo /s srvmain2 /u maindom\hiropln
# 查看远程 maindom 域中 srvmain2 计算机的配置信息(以列表形式展示)
systeminfo /s srvmain2 /u maindom\hiropln /p p@ssW23 /fo list
# 查看当前计算机的初始安装日期和系统的启动时间
systeminfo | findstr /i "初始安装日期 系统启动时间"
wmic
在交互式命令 shell 中显示 WMI 信息。更多用法参考:wmic 命令
提醒
WMI 命令行 (WMIC) 实用工具自 Windows 10 版本 21H1 和 Windows Server 的 21H1 半年频道发布起弃用。 此实用工具已被 Windows PowerShell for WMI 取代(请参阅 使用 WMI)。
wmic logicaldisk # 查看计算机上各个盘的信息
wmic context # 显示全局开关的值
wmic /? # 查看其他用法
# 获取 C 盘剩余空间大小与总大小(单位:Byte)
wmic LogicalDisk where "Caption='C:'" get FreeSpace,Size /value
# 获取当前 OS 的 Caption、安装日期及系统架构信息
wmic os get Caption,InstallDate,OSArchitecture /value
# 查看名为 cmd.exe 所有进程命令行,exe 全路径,PID 及线程数
wmic process where Caption="cmd.exe" get commandline,ExecutablePath,ProcessId,ThreadCount /value
# 查看名为 cmd.exe 所有进程的 exe 全路径及当前打开的句柄数
wmic process where Caption="cmd.exe" get ExecutablePath,HandleCount /value
# 查看名为 cmd.exe 所有进程的 exe 全路径、当前虚拟地址空间占用及物理内存工作集
wmic process where Caption="cmd.exe" get ExecutablePath,VirtualSize,WorkingSetSize /value
logoff
从远程桌面会话主机服务器上的会话注销用户,并删除该会话。
logoff # 注销当前用户
logoff 12 # 注销会话 ID 为 12 的用户
logoff TERM04 /server:Server1 # 注销服务器 Server1 上 TERM04 会话的用户
shutdown
提醒
远程关机需获取执行权限:
修改远程 PC 的 "本地安全策略"
获得远程 IPC 管理权限
关闭或重启一台本地或远程计算机。更多参数用法参考:shutdown 命令,
此命令可 关闭、重启、注销、休眠 计算机。
shutdown /s # 关闭本地计算机
shutdown /s /t 3600 # 一小时后,关闭本地计算机
shutdown /a # 终止系统关闭
shutdown /r # 关闭并重启本地计算机
shutdown /m 192.168.1.108 /r # 关闭并重启 IP 为 192.168.1.108 的计算机
shutdown /g # 关闭并重启计算机,重启后重新启动所有注册的应用程序
shutdown /l # 注销本地计算机
shutdown /h /f # 休眠本地计算机(强制关闭正在运行程序)
regsvr32
将 .dll 文件注册为注册表中的命令组件。更多参数用法参考:regsvr32 命令
regsvr32 /s clock.ocx # 静默注册 clock.ocx 组件
regsvr32 /U myCommon.dll # 卸载 myCommon.dll 组件
regsvr32 schmmgmt.dll # 注册 schmmgmt.dll 组件
format
format 命令设置驱动器格式以接受 Windows 文件。只有管理员组的成员才能格式化硬盘驱动器。更多参数用法参考:format 命令
文件系统类型 | 分配单元大小 |
---|---|
FAT | 512 、1024 、2048 、4096 、8192 、16K 、32K 、64K 。 对于大小超过 512 字节的扇区,还支持 128K 和 256K |
FAT32 | 512 、1024 、2048 、4096 、8192 、16K 、32K 、64K 。对于大小超过 512 字节的扇区,还支持 128K 和 256K |
NTFS | 512 、1024 、2048 、4096 、8192 、16K 、32K 、64K 、128K 、256K 、512K 、1M 、2M |
exFAT | 12 、1024 、2048 、4096 、8192 、16K 、32K 、64K 、128K 、256K 、512K 、1M 、2M 、4M 、8M 、16M 、32M |
ReFS | 4096 、64K |
UDF | - |
format a: # 使用默认大小格式化驱动器 A 中的新软盘
format a: /q # 使用默认大小格式化驱动器 A 中的新软盘(快速格式化)
format a: /v:DATA # 使用默认大小格式化驱动器 A 中的软盘,并为其分配卷标 DATA
format E: /FS:ntfs # 以 NTFS 类型格式化 E 盘(文件系统类型参考如上表格)
format F: /FS:fat32 /q # 以 FAT32 类型快速格式化 F 盘
chkdsk
检查卷的文件系统和元数据是否存在逻辑和物理错误。 更多参数用法参考:chkdsk 命令
chkdsk /f D: # 检查 D 盘并显示状态报告,同时会修复磁盘上的错误
chkdsk *.* # 检查当前目录中 FAT 磁盘上所有文件是否有不连续的块
subst
将路径与驱动器号相关联。
磁盘映射信息都保存在注册表以下键值中:
HKEY_CURRENT_USER\Network
提醒
以下命令不起作用,并且不得在 subst 命令中指定的驱动器上使用:
subst # 显示目前所有的映射
subst Z: \\com\software # 将 \\com\software 共享映射为本地 Z 盘
subst Y: E:\src # 将 E:\src 映射为本地 Y 盘
subst Z: /d # 删除 Z 盘映射
cmdkey
创建、列出并删除存储的用户名和密码或凭据。更多参数用法参考:cmdkey 命令
cmdkey /list # 列出可用的凭据
cmdkey /list:10.12.190.82 # 列出指定目标的凭据
cmdkey /list:Domain:target=10.12.190.82 # 列出指定目标的凭据
cmdkey /delete /ras # 删除远程访问的凭据
cmdkey /delete:server01 # 删除 Server01 的凭据
cmdkey /delete:Domain:target=10.12.190.82 # 删除指定目标的凭据
cmdkey /add:Domain:target=10.12.190.82 /user:username /pass:password # 添加凭据
cscript
启动要在命令行环境中运行的脚本。更多参数用法参考:cscript 命令
cscript /nologo run.vbs # 执行 run.vbs 脚本,不显示 Windows 脚本宿主横幅
流程控制与注释
if
在批处理程序中执行条件处理。更多参数用法参考:if 命令
# 示例语法
if [not] ERRORLEVEL <number> <command> [else <expression>]
if [not] <string1>==<string2> <command> [else <expression>]
if [not] exist <filename> <command> [else <expression>]
# 如果 product.dat 文件未找到,执行 echo Cannot find data file 命令
if not exist product.dat echo Cannot find data file
# 如果 errorlevel 值为 1 时,执行 goto end 命令
if not errorlevel 1 goto end
# 批处理文件中使用如下:
# 如果找到 Product.dat 文件,执行 del Product.dat 命令
# 如果未找到 Product.dat 文件,执行 echo The Product.dat file is missing. 命令
IF EXIST Product.dat (
del Product.dat
) ELSE (
echo The Product.dat file is missing.
)
goto
将 cmd.exe 定向到批处理程序中的标记行。 在批处理程序中,此命令将命令处理定向到由标签标识的行。
找到标签后,继续处理,从下一行开始的命令开始。更多参数用法参考:goto 命令
# 批处理脚本 label 定义如下:
:begin
:label1
:end
# goto begin label
goto begin
for
为一组文件中的每个文件运行指定命令。更多参数用法参考:for 命令
# 批处理使用语法示例:
for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]
# 显示当前目录中扩展名为 .doc 或 .txt 的所有文件内容
for %f in (*.doc *.txt) do type %f
rem
在脚本、批处理或 config.sys 文件中记录注释。 如果未指定注释,rem 将添加垂直间距。更多参数用法参考:rem 命令
rem 注释内容 # 在批处理文件中添加注释,其后的命令不会被执行,但会回显
:: 注释内容 # :: 也可以起到 rem 的注释作用,且不会有回显
特殊符号
说明
整理批处理文件常用特殊符号,包含:&
、&&
、|
、||
、>
、>>
、<
、@
、,
、;
等。
&
顺序执行多条命令,不管命令是否执行成功
cd /d D:\Test & echo 'hello world!' # 切换到 D 盘下 Test 目录,再输出 hello world!
&&
顺序执行多条命令,当碰到执行出错的命令后将中断执行
find "ok" D:\test.txt && echo 成功 # 找到 ok 输出成功,如果未找到不输出
|
管道命令
dir *.* /s/a | find /c ".exe" # 先执行 dir 命令,然后对结果执行 find 命令
||
顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令
find "ok" c:\test.txt || echo 不成功 # 找到 ok 不输出,未找到 ok 输出 不成功
>
将当前命令输出以覆盖的方式重定向
tasklist > list.txt # 将 tasklist 的输出结果以覆盖的方式输出到 list.txt 文件中
tasklist 1> list.txt # 等同如上命令
dir bin 2> list.txt # 将输出结果打印到屏幕上,错误信息重定向到 list.txt 文件中
# 将错误信息重定向到输出结果,再将输出结果以覆盖方式重定向到 list.txt 文件中
dir bin > list.txt 2>&1
# 将输出结果重定向到错误信息,再将错误信息以覆盖方式重定向到 list.txt 文件中
dir bin 2> list.txt 1>&2
tasklist >nul # 屏幕上不打印 tasklist 的输出结果,错误信息仍会打印
dir bin 2>nul # 屏幕上不打印命令的错误信息,输出结果仍会打印
dir bin >nul 2>&1 # 将命令的错误信息重定向到输出结果,然后不打印输出结果
dir bin 2>nul 1>&2 # 将命令的输出结果重定向到错误信息,然后不打印错误信息
>>
将当前命令输出以追加的方式重定向
tasklist >> list.txt # 将 tasklist 的输出结果以追加的方式重定向到 list.txt 文件中
tasklist 1>> list.txt # 等同如上命令
dir bin 2>> list.txt # 输出结果打印到屏幕上,错误信息重定向到 list.txt 文件中
# 将错误信息重定向到输出结果,然后将输出结果以追加的方式重定向到 list.txt 文件中
dir bin >> list.txt 2>&1
# 将输出结果重定向到错误信息,然后将错误信息以追加的方式重定向到 list.txt 文件中
dir bin 2>> list.txt 1>&2
<
从文件中获得输入信息,而不是从屏幕上,一般用于交互式等待输入的命令
date < temp.txt # 将 temp.txt 中的值设置到 date
@
命令修饰符 在执行命令前,不打印出该命令的内容
@echo off # 防止批处理命令打印在屏幕上,会在首行加上此命令
@cd /d D:\Test # 执行该命令时,不答应输出内容
,
在某些特殊的情况下可以用
,
来代替空格使用
dir,D:\ # 相当于 dir D:\
;
当命令相同的时候,可以将不同的目标用
;
隔离开来但执行效果不变。如执行过程中发生错误则只打印错误,不中断命令执行
dir C:\;D:\;E:\ # 相当于顺序执行 dir C:\ dir D:\ dir E:\