应该掌握的常用 CMD 命令

Windows 系统是典型的可视化操作系统,除非你是程序员否则基本是用不到命令行的。而 Linux 是典型的命令行操作系统,一般使用命令行来使用 Linux 各种软件,虽然它也有可视化图形页面。

所以一般情况下:

  • Linux下就要会 Shell 脚本。 (后台)
  • Windows下用 DOS 的CMD 。(前端)

什么是DOS?

我们使用计算机接触最频繁的就是DOS。DOS是英文Disk Operating System的缩写,意思是“磁盘操作系统”,顾名思义,DOS主要是一种面向磁盘的系统软件,说得简单些,DOS就是人给机器下达命令的集合,是存储在操作系统中的命令集,有了DOS,我们就可以更容易理解怎么给机器下命令,不必去深入了解机器的硬件结构,也不必去死记硬背那些枯燥2进制数字的机器命令,只需通过一些接近于英语的DOS命令,我们就可以轻松地完成绝大多数的日常操作。另外,DOS还能有效地管理在它控制下的各种软硬件资源,对它们进行合理的调度,所有的软件和硬件都在DOS的监控和管理之下,有条不紊地进行着运转。

一、如何打开CMD?

win7 或者 XP 直接按 win 键,在弹出的窗口选择你要输入的程序,比如 cmd 然后按 enter 键就可以打开 cmd命令窗口了!但是win8这样做就不方便。

可以使用快捷键 win+R ,在左下角弹出一个窗口才是在 window 系统下最通用的做法,打开窗口后再输入 cmd 按 enter 键打开命令窗口。

二、内部命令和外部命令

首先在 cmd 命令输入 help,屏幕会列出一些命令,可以自己试试的玩。一般看到一个命令后,如果没有说明文档,你就尝试的在其命令后直接输入 -help 或者 /? 再或者一个随便什么的字符让它报错,一般情况下就会给出这个命令下相应的参数说明。试试吧!

还有就是要明白 CMD 分为内部命令和外部命令:

  • 内部命令:move、copy、title等等。
  • 外部命令可以从网上下载 xxx.exe命令放进入 C:\Windows\System32 文件里面,就可以在命令行里面使用,自带的有:ping 和 mstsc等。另外如果你下载的 xxx.exe文件也可以放入自己指定得文件夹,不过得配置下环境变量。

三、深入命令行学习

3.1 shutdown

shutdown --help | more 分页查看说明
shutdown -s //默认一分钟后关机
shutdown -a//中止系统关闭
shutdown -t//将关闭前的超时时间设置为 xxx 秒。

3.2 start

start 可以打开文件、文件目录、exe程序等等。

start//不带任何参数,启动一个单独的CMD窗口
exit //关闭当前CMD窗口
start .\mini_app//打开文件夹
start \Windows\Notepad.exe//打开记事本
start \Windows\Notepad.exe ./mini_app/app.json//用记事本打开app.json文件
start /MAX  \windows\notepad.exe//窗口最大化方式打开/MIN就是最小话方式打开
start www.baidu.com//默认浏览器打开网址

3.3 mode

配置CMD窗口大小

mode con: cols=60 lines=30
mode 60,30
//上面两种写法等效

3.4 title

设置命令提示窗口的窗口标题。

title CondorHero

3.5 color

设置默认的控制台前景和背景颜色。即设置CMD的背景色和字体颜色

color [背景色][前景色]
color 2//字体设置为蓝色
color F0 //背景为F亮白色,字体为0黑色
color //恢复默认值

3.6 cd

显示当前目录名或改变当前目录。

C:\Users\hpzhan\Desktop\test\pro>cd
C:\Users\hpzhan\Desktop\test\pro
//不带参数只键入 CD,则显示当前的目录
cd / //进入根盘符
cd ..   //指定要改成父目录。

3.7 dir

显示目录中的文件和子目录列表。

dir /ar //a是全部,r只读

3.8 mkdir

创建目录。可以简写为 md

mkdir ./test //创建test目录。
md ./test //创建test目录。

3.9 echo 和 type

C:\Users\hpzhan\Desktop\test\pro>echo 你好
你好
echo 我是文件里面的内容 > 1.txt //往文件里面增加内容,可以借此来新建一个文件
type 1.txt//显示文本文件的内容。

通过type 还可以创建一个空文件 type nul > c.txt,通过attrib还可以设置文件属性:

C:\Users\hpzhan\Desktop\test\pro>attrib c.txt
A                    C:\Users\hpzhan\Desktop\test\pro\c.txt

C:\Users\hpzhan\Desktop\test\pro>attrib +s c.txt

C:\Users\hpzhan\Desktop\test\pro>attrib c.txt
A  S                 C:\Users\hpzhan\Desktop\test\pro\c.txt

C:\Users\hpzhan\Desktop\test\pro>attrib -s c.txt

C:\Users\hpzhan\Desktop\test\pro>attrib c.txt
A                    C:\Users\hpzhan\Desktop\test\pro\c.txt

如果 CMD 窗口显示中文乱码那是因为字符编码不匹配,一般 CMD 默认当前页编码为:936——简体中文,我们需要通过命令行修改为(65001)UTF-8模式。

chcp 65001 //change current page

3.10 copy、xcopy 、del、rename、move、replace

copy from.txt traget.txt//将一份或多份文件复制到另一个位置。
xcopy //复制文件夹 默认/S
/S           复制目录和子目录,不包括空目录。
/E           复制目录和子目录,包括空目录。

del //删除一个或多个文件。
/S            删除所有子目录中的指定的文件。
/Q            安静模式。删除全局通配符时,不要求确认

rename //重命名文件或文件夹可简写为ren。

move//移动文件并重命名文件和目录。

replace //替换文件。
/A                       把新文件加入目标目录。不能和/S 或 /U 命令行开关搭配使用。
/P                       替换文件或加入源文件之前会先提示你进行确认。
/S                       替换目标目录中所有子目录的文件。不能与 /A 命令开关搭配使用。

3.11 set 显示、设置或删除 cmd.exe 环境变量。

要显示当前环境变量,键入不带参数的 set。
如何定义一个变量:

set          : 显示所有环境变量
set name=CondorHero :设置一个临时(只在当前CMD窗口有用)name变量,值为CondorHero
set name     : 显示name的值
echo %var%   : 引用变量的值
set name=    : 删除name变量

案例如下:

C:\Users\hpzhan\Desktop\test\pro>set name=CondorHero

C:\Users\hpzhan\Desktop\test\pro>set name
name=CondorHero

C:\Users\hpzhan\Desktop\test\pro>echo %name%
CondorHero

C:\Users\hpzhan\Desktop\test\pro>set name=

C:\Users\hpzhan\Desktop\test\pro>set name
环境变量 name 没有定义

利用 set 进行简单的运算:

C:\Users\hpzhan\Desktop\test\pro>set /a result=8*8
64
C:\Users\hpzhan\Desktop\test\pro>echo %result%
64

接收用户输入,可以做一些人机交互:

C:\Users\hpzhan\Desktop\test\pro>set /p result=请输入一个数字
请输入一个数字90
C:\Users\hpzhan\Desktop\test\pro>echo %result%
90

命令行形式设置环境变量,nodeJs、python等使用CMD的时候会用到:

setx PATH "%path%;文件路径" //设置环境变量

3.12 批处理(.bat文件)

每次都输入CMD命令太过麻烦,对于类似得操作可以使用批处理,即新建 xxx.bat 文件,windows下可直接打开运行。我们现在先看一个案例求一个数得立方,demo.bat:

@echo off
chcp 65001
set /p num=求一个数的立方,请输入一个数:
set /a result=%num%*%num%
echo 计算结果显示:%num%的立方为%result%
echo 文件已经成功执行,请按任意键退出!
pause >nu

动图演示:


GIF.gif

一些代码说明:

@echo off
关闭回显

@echo on
打开回显

若要显示当前回显设置,请键入不带参数的 echo 
C:\Users\hpzhan\Desktop\test\pro>echo
ECHO 处于打开状态。

@echo off并不是DOS程序中的,而是DOS批处理中的。当年的DOS,所有操作都用键盘命令来完成,
当你每次都要输入相同的命令时,可以把这么多命令存为一个批处理,从此以后,只要运行这个批处理,
就相当于打了几行、几十行命令。
 
DOS在运行批处理文件时,会依次执行批处理中的每条命令,
并且会在显示器上显示,如果你不想让它们显示,可以加一个"echo off"语句,但是"echo off"也是命令,
它本身也会显示,如果连这条也不显示,就在前面加个"@","@"是用来关闭具体某一条命令不在显示器上显示。
 

pause 就是暂停命令,执行时会在命令行窗口显示"请按任意键继续. . ."并等待你按键。
pause > nul 的作用也是暂停,区别是不显示"请按任意键继续. . ."这些字,nul相当于空文件,把这些文字隐去了
,什么也不显示,同样是等待你按任意键退出。此往往用于批处理,自己用echo命令自定义显示提示信息,例如:
echo 文件已经成功执行,请按任意键退出!

判断文件或文件夹是否相等 if exit
判断两个字符串是否相等 if "字符串1" == "字符串2"
判断某个变量是否被赋值 if defined var
判断两个数值是否相等 if 数值1 equ 数值2
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于

现在来实现一个计算器源码如下:

@echo off
chcp 65001
echo 加减乘除计算器!
echo 输入格式: a + b
rem 注释符号。

set /p num1=请输入一个操作数:

rem 这里必须空一 行,上下不能挨着否则出错

set /p operator=请输入操作符(+、-、*、/):

set /p num2=请输入另一个操作数:

if %operator% == + (
    set /a result = %num1% + %num2%
)

if %operator% == - (
    set /a result = %num1% - %num2%
)
if %operator% == * (
    set /a result = %num1% * %num2%
)
if %operator% == / (
    set /a result = %num1% / %num2%
)

echo 最后得计算结果显示:%num1% %operator% %num2% = %result%
echo 文件已经成功执行,请按任意键退出!
pause >nu

代码动图演示:


3.13 find和findstr

find 
find 文件名 ,目录下查找某文件。
findstr
查找文件里面的字符串。

C:\Users\hpzhan\Desktop\test\pro>type search.txt
惠普
爱情公寓1
abc
123
爱情公寓2
爱情公寓5
decgt3
C:\Users\hpzhan\Desktop\test\pro>find "爱" search.txt

---------- SEARCH.TXT
爱情公寓1
爱情公寓2
爱情公寓5

C:\Users\hpzhan\Desktop\test\pro>findstr "爱" search.txt
爱情公寓1
爱情公寓2
爱情公寓5

四、特殊字符

主要特殊字符:

@ 隐藏命令的回显。
%使用两个%包含一个字符串表示引用环境变量
| 命令管道符       当前一个命令的结果作为后一个命令的参数来使用
dir | find "s"
查找当前显示的目录中带s得文件夹
& 命令连接字符     比如我要在一行文本上同时执行两个命令,就可以用&命令连接这两个命令
&& 组合命令        当前一个命令失败时,后一个命令就不会再执行了
|| 组合命令       如果前一个命令执行成功,后面的命令就不执行了。如果前一个命令失败,才执行后一个命令
() 命令包含或者是具有优先权的界定符

: 标签定位符,可以接受goto命令所指向的标签。比如在批处理文件里面定义了一个":begin"标签,用"goto :begin"命令就可以转到":begin"标签后面来执行批处理命令了。可跳过一些语句

> 和 >> 以及 < 命令都是重定向操作符,> 直接内容覆盖,>> 直接追加内容,右边的内容输出到左边,例如sort /r < error.txt 倒叙输出 error.txt的内容

默认错误信息,在命令行显示,我们可以通过2把错误信息写入文件
C:\Users\hpzhan\Desktop\test\pro>ir 2> error.txt

?通配任意一个字符
??通配任意两个字符
*代表任意个任意字符

案例使用:

@echo off
chcp 65001
rem 一起输出123
echo 1 & echo 2 & echo 3
rem 上面的语句等价下面这句,都是一条语句输出结果
(
    echo 1
    echo 2
    echo 3
)
goto :begin
echo 我被跳过
:begin
echo 哈哈
pause > nul

输出结果:

Active code page: 65001
1
2
3
1
2
3
哈哈

注意| & && || 之间完全可以混着用

五、for 循环

  • 命令行输出
C:\Users\hpzhan>for %i in (a,b,c,d) do echo %i

C:\Users\hpzhan>echo a
a

C:\Users\hpzhan>echo b
b

C:\Users\hpzhan>echo c
c

C:\Users\hpzhan>echo d
d
  • 脚本输出
    上面的 for 循环如果直接放到脚本里面不能执行,变量必须是双百分号:
@echo off

for %%i in (a,b,c,d) do echo %%i

pause > nul

结果:

a
b
c
d

限免演示一个特别有用的功能,批量创建和修改文件名:

@echo off
chcp 65001
for /L %%i in (0,1,100) do (mkdir %%i && echo 第%%i个文件创建成功)

/f的应用:

@echo off
chcp 65001
type c.txt

rem c.txt文件的原内容如下所示:
rem 1 2 3
rem 4 5 6
rem 7 8 9

echo ☆☆☆☆☆☆
echo ——————————

rem /f中delims根据定义的符号,负责切分字符串,比如delims=空格 就是根据空格来切分字符串。

rem 如果/f后面不加参数的话,delims的默认也是空格

for /f  "delims= " %%i in (./c.txt) do (echo %%i)
rem 输出
rem 1
rem 4
rem 7
rem 另外"delims="等于号之后什么也不加表示原样输出

echo ------------

rem tokens 表示输出几列,后面需要新增对应的变量接收
for /f "tokens=1,2 delims= " %%i in (./c.txt) do echo %%i %%j



echo ============
rem skip指在文件开始时忽略的行数
for /f "skip=1 tokens=1,2 delims=:" %%i in (./c.txt) do (echo %%i)

pause > nul

输出结果:
Active code page: 65001
1 2 3
4 5 6
7 8 9☆☆☆☆☆☆
——————————
1
4
7
------------
1 2
4 5
7 8
============
4 5 6
7 8 9

/d/r的应用:

rem 匹配当前目录下所有的文件
for %%i in (*) do (echo %%i)
rem /d配置当前目录下所有的目录和文件
for /d %%i in (*) do (echo %%i)
rem /r 提取某目录下所有的.txt文件的路径
for /r D:\ %%i in (*.txt) do (echo %%i)

六、网络相关

ping www.baidu.com//查看域名对应的IP和网络是否畅通
telnet需要在=>控制面板\程序\程序和功能\启用或关闭windows功能\打开 Telnet Client功能
telnet www.baidu.com 80//查看端口占用情况

netstat显示协议统计信息和当前 TCP/IP 网络连接。常用参数为:
-a            显示所有连接和侦听端口。
-n            以数字形式显示地址和端口号。
-o            显示拥有的与每个连接关联的进程 ID。
通常用来寻找端口号,配合taskmgr和tasklist以及taskkill来使用

netsh重要的要命

netsh(Network Shell) 是一个windows系统本身提供的功能强大的网络配置命令行工具,可以用来修改IP,网关及DNS和查看无线网络的密码。

备份网络配置
netsh dump > backup_network.txt

设置静态IP
set address name="本地连接"  source=static addr=192.168.2.1 mask=255.255.255.0
设置自动获取IP
set address name="本地连接" source=dhcp
设置其他网关DNS等
set address name="本地连接" gateway=192.168.0.1 gwmetric=0

firewall.cpl//打开防火墙

查看无线网
netsh wlan show profile
所有用户配置文件 : Tenda_405DC8

查看无线网密码
netsh wlan show profile name=WIFI名 key=clear//clear明文显示密码
SSID 名称              :“Tenda_405DC8”
关键内容            : 123456789

查看激活操作系统slmgr命令

slmgr是Software LicenseManger的简称,是Windows软件授权管理工具。slmgr是管理系统激活和密钥、证书的主要组件。slmgr的所有功能都是通过slmgr.vbs提供的,采用VBScript命令行方式执行。

winver//关于windows
查看激活信息         slmgr /xpr || slmgr /dli
卸载产品密钥         slmgr /upk        upk是 uninstall product key 的简写
安装产品密钥         slmgr /ipk 6NMRW-2C8FM-D24W7-TQWMY-CWH2D
设置密钥管理服务器    slmgr /skms kms.v0v.bid
激活Windows         slmgr /ato

这个激活原理请看,讲的非常的好:https://v0v.bid/kms.html

七、实用技能

  1. ping 命令它是用来检查网络是否通畅或者网络连接速度的命令,后面是IP或者是网址!程序员常用来查询域名是否解析成功。

  2. 控制台命令窗口中一些技巧:win7 控制台不能用 ctrl+v/c,但是 win10是可以的,win7复制粘贴只能如下操作:
    复制内容:右键弹出快捷菜单,选择“标记(K)”,然后选中所需复制的内容,然后右键即可
    粘贴内容:右键弹出快捷菜单,选择“粘贴(P)”

  3. 在文件夹空白处按住Shift,然后右键弹出快捷菜单,可以看到“在此处打开命令行窗口”

  4. 使用上下方向键,翻看使用过的命令

  5. 进入计算机某个盘符例如 D 盘,D: 回车

  6. 查看本机 ip 命令为: ipconfig

  7. 清除屏幕 cls

  8. Tab键补全

  9. Tracert(跟踪路由)是路由跟踪实用程序 tracert www.baidu.com

系统快捷键:

快捷键 功能
win+E 打开文件管器
backspace 在文件管理器里面返回
win+D 显示/隐藏桌面
win+L 锁计算机
alt+F4 关闭当前程序
ctrl+shift+Esc 打开任务管理器(或者ctrl+alt+delete)
ctrl+F 在一个文本或者网页里面查找,相当实用(退出一般按ESC)
ctrl+A 选中所有文本
win+B 选中桌面右下方托盘栏应用,打开最小化的微信最好用
win+. windows自带的表情符号👍😘
Win+X win10唤起开始按钮右键菜单
Win+ 向上 键最大化窗口
Win+ 向左 键将窗口左移
Win+ 向右 键将窗口右移
Win+ 向下 键最小化窗口

浏览器:

功能 快捷键
关闭当前的标签页或弹出式窗口 Ctrl + w 或 Ctrl + F4
按标签页的关闭顺序重新打开先前关闭的标签页 Ctrl + Shift + t
打开新的标签页,并跳转到该标签页 Ctrl + t
打开新窗口 Ctrl + n
在无痕模式下打开新窗口 Ctrl + Shift + n
跳转到下一个打开的标签页 Ctrl + Tab 或 Ctrl + PgDn
跳转到上一个打开的标签页 Ctrl + Shift + Tab 或 Ctrl + PgUp
跳转到特定标签页 Ctrl + 1 到 Ctrl + 8
跳转到最后一个标签页 Ctrl + 9
打开当前标签页浏览记录中记录的上一个页面 Alt + 向左箭头键
打开当前标签页浏览记录中记录的下一个页面 Alt + 向右箭头键
切换 DevTools 的面板 ctrl + [ 和 ctrl + ]
切换 DevTools 窗口的展示布局 ctrl + shift + D
显示或隐藏书签栏 Ctrl + Shift + b
在新标签页中打开“历史记录”页 Ctrl + h
在新标签页中打开“下载内容”页 Ctrl + j
打开查找栏搜索当前网页 Ctrl + f 或 F3
跳转到与查找栏中搜索字词相匹配的下一条内容 Ctrl + g
跳转到与查找栏中搜索字词相匹配的上一条内容 Ctrl + Shift + g
跳转到地址栏 Ctrl + l 或 Alt + d 或 F6
停止加载网页 Esc
在新窗口中打开链接 按住 Shift 键的同时点击链接
在新的后台标签页中打开链接 按住 Ctrl 键的同时点击链接
打开链接,并跳转到该链接 按住 Ctrl + Shift 键的同时点击链

推荐阅读更多精彩内容