# CMD常用命令

# 1. 打开 CMD 窗口

步骤:

  1. win + R
  2. 输入 cmd 后回车,打开 CMD 窗口
  3. 输入 powershell 后回车,打开 PowerShell 窗口

# 2. 目录

# 2.1. 查看目录

# 查看当前目录的文件夹及文件
dir

# 2023/06/29  15:32    <DIR>          .
# 2023/06/29  15:32    <DIR>          ..
# 2023/05/20  16:16               587 .eslintrc.js
# 2023/06/27  11:53               544 app.js
# 2023/06/29  15:32    <DIR>          miniprogram_npm
# 2023/06/30  10:39    <DIR>          node_modules
#                9 个文件          6,868 字节
#                6 个目录 220,553,068,544 可用字节


dir /b

# .eslintrc.js
# app.js
# app.json
# app.wxss
# miniprogram_npm
# node_modules


# 查看目录树及其文件
dir /b /s

参考:windows-commands/dir (opens new window)

# 2.2. 查看当前目录

cd

## c:\install

# 已被 cd 命令替代
chdir

### W:\dev

# 2.3. 切换目录

# /D :切换到不同盘符的目录
cd /D c:\install

## c:\install>

# 2.4. 创建目录

# 创建单个目录
mkdir .\dir1

# 创建多级目录
mkdir .\dir1\dir2

# 在根目录中创建,当前盘符的根目录
mkdir \dir1\dir2

参考:windows-commands/mkdir (opens new window)

# 2.5. 删除目录(树)

# rmdir [<drive>:]<path> [/s [/q]]
#   /s 删除目录树(非空目录)
#   /q 不进行确认操作

rmdir /s/q node_modules

参考:windows-commands/rmdir (opens new window)

# 2.6. 移动/剪切 目录

# 将 C:\OldFolder 目录移动到 C:\NewFolder 目录下,
# 并且保持原来的目录名 OldFolder
move C:\OldFolder C:\NewFolder\OldFolder

# OldFolder 就会被重命名为 NewName 并移动到C:\NewFolder
move C:\OldFolder C:\NewFolder\NewName

# 如果 C:\NewFolder\NewName 已存在,则进行覆盖
move C:\OldFolder C:\NewFolder\NewName /Y

# 2.7. 复制目录

# 将 b 目录下的所有内容拷贝到 c 目录
xcopy D:\a\b D:\c /E /I /Y
  • /E 参数表示复制目录和子目录,不包括空目录。
  • /I 参数表示如果目标不存在,则创建目标目录(D:\c)。
  • /Y 参数表示覆盖现有文件而不提示。
  • /Q 安静模式

参考: Windows运维:XCOPY命令使用笔记 (opens new window)

# 3. 文件

# 3.1. 查看文件内容

# type [<drive>:][<path>]<filename>
type ./1.txt

参考:windows-commands/type (opens new window)

# 3.2. 创建文件

# 创建非空文件
echo 123 > 1.txt

# 创建空文件
type NUL > 1.txt

# 创建空文件
fsutil file createnew 1.txt 0

参考:windows-commands/fsutil (opens new window)

# 3.3. 删除文件

del 1.txt

# 安静模式
del /q 1.txt

# 强制删除
del /f 1.txt

参考:windows-commands/del (opens new window)

# 3.4. 拷贝文件

示例:

# 将 1.text 拷贝到 d:\abc
copy 1.text d:\abc

参考:windows-commands/copy (opens new window)

# 3.5. 解压 zip 文件

使用 PowerShell:

# 将 1.zip 解压到当前目录
Expand-Archive .\1.zip .

使用 CMD:

powershell -command "Expand-Archive .\1.zip ."

参考:

# 4. 网络

# 4.1. 连接/断开 网络

netsh wlan show profiles :

# 显示无线网连接过的 WiFi
netsh wlan show profiles

    # 接口 wlan0 上的配置文件:


    # 组策略配置文件(只读)
    # ---------------------------------
    #     <无>

    # 用户配置文件
    # -------------
    #     所有用户配置文件 : JJCCB-neibu
    #     所有用户配置文件 : JJCCB-WIFI

netsh wlan connect name=xxxxx :

# 连接指定的 WIFI
netsh wlan connect name=JJCCB-neibu

netsh wlan disconnect :

# 断开连接
netsh wlan disconnect

其它:

Netsh WLAN delete profile name="Profile_Name"
Netsh WLAN set profileparameter name="Profile_Name" connectionmode=manual
Netsh WLAN set profileparameter name=" Profile_Name" connectionmode=auto
列出配置文件:netsh wlan show profile
导出配置文件:netsh wlan export profile key=clear
删除配置文件:netsh wlan delete profile name=""
添加配置文件:netsh wlan add profile filename=""
连接指定热点:netsh wlan connect name="wifi name"
列出无线接口:netsh wlan show interface
开启无线接口:netsh interface set interface "Interface Name" enabled

# 4.2. 启用/禁用 网卡

重命名:

  1. 所有控制面板项\网络连接 (搜索“网络连接”)

  2. 在图标上单击右键,重命名

    • WLAN -> wlan0
    • 以太网 -> eth0

启用/禁用:

netsh interface set interface eth0 enabled
netsh interface set interface wlan0 disabled

# 4.3. 获取mac地址

C:\Users\wuqinfei>ipconfig/all

无线局域网适配器 wlan0:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : MediaTek Wi-Fi 6 MT7921 Wireless LAN Card
   物理地址. . . . . . . . . . . . . : CC-6B-1E-8C-D9-DB
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::12a9:4001:ea1e:b0e1%10(首选)
   IPv4 地址 . . . . . . . . . . . . : 172.241.11.215(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.254.0
   获得租约的时间  . . . . . . . . . : 2023年9月11日 14:01:47
   租约过期的时间  . . . . . . . . . : 2023年9月11日 18:31:50
   默认网关. . . . . . . . . . . . . : 172.241.11.254
   DHCP 服务器 . . . . . . . . . . . : 172.241.11.254
   DHCPv6 IAID . . . . . . . . . . . : 114060062
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-28-8E-A4-E9-90-2E-16-7E-83-3A
   DNS 服务器  . . . . . . . . . . . : 202.103.24.68
                                       202.103.44.150
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

# 4.4. 查看端口占用的进程

示例:

# 查看占用 8088 端口的进程
netstat -ano | findstr 8088

#  TCP    0.0.0.0:8088           0.0.0.0:0              LISTENING       7476

# 终止 7476 进程
taskkill /F /PID 7476

参考:

# 4.5. 杀死侦听端口的进程

@echo off
for /F "tokens=5" %%a in ('netstat -ano ^| findstr "8080" ^| findstr "LISTENING"') do set "PID=%%a"

if "%PID%"=="" (
    echo "not found port 8080 process。"
) else (
    echo "found port 8080 process,PID 为:" %PID%
    taskkill /F /PID %PID%
)

# 4.6. 下载文件

# 可能触发安全软件拦截。‌‌
certutil -urlcache -split -f http://120.27.131.214:51238/jar/labwind-admin.jar D:\test\labwind-admin.jar


# PowerShell‌
Invoke-WebRequest -Uri "http://120.27.131.214:51238/jar/labwind-admin.jar" -OutFile "D:\test\labwind-admin.jar"

# 4.7. 参考

# 5. 服务

# 5.1. 启动/停止 服务

# 启动
net start 服务名称

# 停止
net stop 服务名称

# 5.2. 安装服务

sc create 服务名称 binPath=路径\可执行文件.exe

# 5.3. 删除服务

sc delete 服务名称

# 5.4. 查看服务状态

sc query 服务名称

# 5.5. 设置服务的启动类型(自动、手动、禁用)

# 自动启动
sc config 服务名称 start= auto

# 手动启动
sc config 服务名称 start= demand

# 禁用服务
sc config 服务名称 start= disabled

# 6. 程序

# 6.1. 注释

说明:

  • 使用 @rem 关键字
  • 使用 :: 符号

示例:

@rem 这是一段注释

:: 这也是一段注释

# 6.2. 变量

说明:

  • 使用 set 临时环境变量,cmd.exe 内有效

示例:

# 设置 环境变量
set project_path=D:\project\test

# 查看
set project_path

# 引用
echo %project_path%

# 删除
set project_path=

参考:

# 6.3. if 语句

语法:

# 如果 上一个命令 返回的错误码 大于 <number> 则 ... 否则 ...
if [not] ERRORLEVEL <number> <command> [else <expression>]

if [not] <string1>==<string2> <command> [else <expression>]
if [not] exist <filename> <command> [else <expression>]


# If command extensions are enabled, use the following syntax:
if [/i] <string1> <compareop> <string2> <command> [else <expression>]
if cmdextversion <number> <command> [else <expression>]
if defined <variable> <command> [else <expression>]

示例:

echo 1  
if ERRORLEVEL 0 echo 执行成功了!

# 大小写敏感
if A == a (echo 相等) else echo 不相等

# 忽略大小写
if /i A == a (echo 相等) else echo 不相等

# <compareop> 
# EQU - 等于
# NEQ - 不等于
# LSS - 小于
# LEQ - 小于或等于
# GTR - 大于
# GEQ - 大于或等于

if 4 GTR 1 (echo 大于) else echo 不大于

参考:

  • https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/if

# 6.4. for

示例: (更新 3 个仓库)

set workspace1=D:\dev\labwind

set rep1=%workspace1%\labwind
set rep2=%workspace1%\labwind-admin-ui
set rep3=%workspace1%\labwind-client-ui

for %%i in (%rep1% %rep2% %rep3%) do (
    git --git-dir=%%i\.git pull 
)

pause

# 6.5. 格式化日期

echo %date%
# 2021/08/29 周日

echo %date:~0,4%%date:~5,2%%date:~8,2%
# 20210829

echo %date:~0,4%-%date:~5,2%-%date:~8,2%
# 2021-08-29

echo %date:~0,4%/%date:~5,2%/%date:~8,2%
# 2021/08/29

echo %date:~0,4%年%date:~5,2%月%date:~8,2%日
# 2021年08月29日

参考:

# 7. 其他

# 7.1. 执行多条命令

命令 作用 举例
& 无条件执行 & 后的命令 cmd1 & cmd2 即 cmd1、cmd2都会执行
&& 成功后执行 cmd1 && cmd2 即若 cmd1 执行成功则执行 cmd2
|| 失败后执行 cmd1 || cmd2 即若 cmd1 执行失败则执行 cmd2

# 7.2. start

说明:

  • Starts a separate Command Prompt window to run a specified program or command.
  • 启动单独的命令提示符窗口以运行指定的程序或命令。

示例:

# 打开网址:
start http://localhost:4000/index.html#/zh-CN

参考:

# 7.3. 更换编码

# 换成utf-8代码页
chcp 65001      

# 换成默认的gbk
chcp 936       

# 美国英语
chcp 437   

# 指定 jar 包编码
java -Dfile.encoding=utf-8 -jar xxx.jar

# 7.4. shutdown

说明:

  • 关闭或重启电脑

示例:

# 1小时(3600秒)后关闭电脑
shutdown /s /t 3600

参考:

# 7.5. timeout - 延迟执行

# 延迟 1 秒,相当于睡眠 1 秒
timeout /t 1

# 8. 参考

本章目录