
说实话我一开始真没打算写“Windows CMD 命令大全”这种到处都能搜到的选题。但每次去客户现场处理Windows服务器问题最后基本都是靠CMD把局面救回来的图形界面卡死、服务起不来、端口被占用、权限被锁死你最终还是要打开那个黑乎乎的窗口老老实实敲命令。这个黑窗口从DOS时代一路走到Windows 11看着像古董但关键时刻比什么花哨工具都顶用。网上一搜“命令大全”跳出来的东西很杂有Linux命令、有魔兽世界GM命令、还有交换机命令确实容易把人绕晕。我这篇只讲Windows自带的CMD而且不打算做成一份逐条复制的字典——那种文章你收藏了也不会看。我按真实工作场景来挑命令网络排查、端口管理、文件权限、脚本自动化、环境部署、故障修复每一类都给出我自己实测过的用法和踩过的坑。适合运维、开发也适合那种“电脑出问题只能硬着头皮自己查”的普通用户。1. 先搞明白CMD是什么以及为什么不用PowerShell1.1 CMD的身世与定位CMD全称是cmd.exe是Windows NT时代至今一直内置的命令行解释器。它的血统可以追溯到DOS时代的command.com所以很多DOS命令在今天的CMD里仍然能用比如dir、copy、ren、type。这种可怕的兼容性既是优点也是包袱语法老旧、能力有限但胜在不管多老的Windows系统里都有它。很多人会问现在不是有PowerShell吗为什么还要学CMD。这个我得说清楚PowerShell确实更强大它走的是对象管道能操作.NET对象适合写复杂的管理脚本。但CMD走的是纯文本流轻量、直接、启动快而且在以下场景里几乎是不可替代的——某些老旧批处理脚本只在CMD下行为正常很多部署脚本里的命令比如net use、sc、for循环在PowerShell里语法完全不同系统进入安全模式或恢复环境WinRE时默认打开的终端也是CMD。说白了CMD是底线保障你可以不常用但不能不会用。另外要区分一个概念Windows Terminal。它不是一个独立的Shell而是一个终端外壳你可以把它理解成“好看点的窗口容器”里面既能跑CMD也能跑PowerShell还能跑WSL的Linux终端。Windows 11 26H2之后系统默认终端就是Windows TerminalWinR敲cmd弹出的可能已经不是老式黑窗口了但底层执行的还是cmd.exe。1.2 什么场景必须用CMD结合我自己这些年的实际经验CMD真正发力的场景并不是平时敲几条命令而是系统出问题的时候网络排查ipconfig、ping、netstat、tracert这些命令在图形界面里绕来绕去反而慢CMD里一行命令出结果。端口管理开发时遇到“端口被占用”在CMD里查PID、杀进程是最快的解法。文件权限同事离职了他留下的文件夹打不开takeown和icacls直接拿回所有权。系统修复sfc /scannow、chkdsk这类命令必须在命令行环境里跑。批量操作几十台电脑要统一改设置、拷文件写一个bat脚本丢给CMD跑完比手工点半天强太多。打开CMD的方式我直接给你列全平时至少记两三种WinR输入cmd回车这是最快的。开始菜单搜索框输入cmd右键“以管理员身份运行”。在文件资源管理器地址栏输入cmd回车直接以当前目录打开。按住Shift在文件夹空白处右键选“在此处打开PowerShell窗口”或“打开终端”。任务管理器里“文件 运行新任务”输入cmd还能勾选“以系统管理权限创建此任务”。注意凡是涉及修改系统设置、杀进程、改权限、写系统目录的操作都建议用第2种方式——以管理员身份运行。否则你会撞见一堆“拒绝访问”。2. 文件、磁盘与权限日常最高频的一批命令2.1 目录与文件操作速查CMD里文件操作命令看起来简单但细节坑不少。先给你一张我自己常用的速查表命令作用常用示例cd /d切换目录跨盘符必须带/dcd /d D:\workdir列出目录内容dir /a /btree /f树状显示目录结构及文件tree /f D:\projectmd/mkdir新建目录md D:\backuprd/rmdir删除目录rd /s /q D:\tempcopy复制文件copy a.txt D:\bak\xcopy复制目录树xcopy D:\src D:\dst /e /irobocopy强大多目录同步工具robocopy D:\src D:\dst /mirmove移动或重命名move C:\old.txt C:\new.txtren重命名ren a.txt b.txtdel删除文件del /s /q D:\tmp\*.log几个容易踩坑的细节第一跨盘符必须用cd /d直接cd D:在CMD里只会切换盘符不切换目录所以到了D盘后你还得再cd一次具体路径。第二rd /s /q删除目录不会进回收站删错了找不回来我自己吃过亏现在凡是删目录都会先确认路径再敲回车。第三xcopy复制目录时如果不加/i会提示“目标路径是文件名还是目录名”脚本里卡住就是这里。robocopy我单独说一下它是Windows自带的、被严重低估的好工具。比如你要把整个项目目录镜像备份到移动硬盘直接robocopy D:\project G:\backup\project /mir会把源目录结构完整复制过去。加/log:backup.log还能输出日志跑完自己检查比手工复制可靠太多了。2.2 权限问题takeown和icacls怎么用网上搜“cmd takeown”的热度一直很高我估计很多人是遇到了“拒绝访问”才来搜的。典型的场景同事离职了他电脑里的项目文件夹管理员都打不开或者一块旧硬盘插上去里面的目录所有者变成了原来的账号新系统登录的就是打不开。处理思路分两步第一步先获取文件或目录的所有权。命令格式takeown /f D:\olduser\project /r /d y参数含义/f指定路径/r递归处理所有子目录和文件/d y表示遇到无法直接查看的目录时自动确认“是”。必须用管理员身份运行CMD否则会提示找不到文件或拒绝访问。第二步拿到所有权之后还不一定能访问因为访问权限由ACL访问控制列表决定。接着用icacls给当前用户授予完全控制权icacls D:\olduser\project /grant 用户名:F /t把“用户名”换成你的Windows账号名。用whoami可以查到当前账号。/t表示递归应用到所有子目录和文件。注意takeown和icacls是把双刃剑。拿到所有权之后能访问所有文件但同时意味着你的操作会影响整个目录树。不建议对自己的系统目录比如C:\Windows整个跑一遍否则可能弄崩权限链到时候连系统自带的进程都没权限访问文件。实操中有个常见误区直接先跑icacls结果报“访问被拒绝”因为命令本身没有权限修改所有者是别人的文件。必须先takeown再icacls顺序不能反。如果跑完还有个别文件打不开检查一下是不是文件被其他进程占用或者文件本身只读属性没去掉。2.3 磁盘检查与清理系统变卡、开机变慢、磁盘灯常亮CMD里有两招值得先试。第一招chkdsk检查磁盘错误chkdsk C: /f /r/f修复磁盘错误/r定位坏扇区并恢复可读信息。C盘是系统盘运行时通常会提示“该卷正在被其他进程使用是否计划在下次重启时检查”输入Y重启后自动执行。千万别强制拔电跳过那正是磁盘检查半途而废的高发时刻。第二招sfc /scannow检查系统文件完整性sfc /scannow这个命令会扫描受保护的系统文件发现损坏的自动从缓存副本里恢复。跑完提示“Windows资源保护未发现任何完整性冲突”就不用管如果提示“无法修复”可以再配合部署映像修复命令DISM跑一次。磁盘清理方面cleanmgr是系统内置的图形化清理工具但也可以用命令行参数直接打开指定盘符的清理面板cleanmgr /d C:。网上流传的一些“扫盘代码”大多是调这些系统自带工具或者清缓存我不建议去跑来源不明的所谓扫盘脚本谁也不知道里面夹带了什么用系统自带命令就够安全了。3. 网络排查与端口、服务、外设命令3.1 查看端口占用并关闭指定端口这个场景太常见了开发环境里启动服务提示“端口被占用”或者跑一个老旧程序它占住了某个端口导致新服务起不来。在Windows上查端口和杀进程CMD就是最优解。先查端口对应的PID进程标识符netstat -ano | findstr :8080netstat -ano会列出所有网络连接、监听端口以及对应的PID-o参数显示PIDfindstr :8080过滤出8080端口的行。输出类似TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 12345最后一列12345就是PID。接着用tasklist确认这个PID是什么进程tasklist /fi PID eq 12345确认是你要杀的那个进程后强制结束它taskkill /pid 12345 /f/f代表强制终止。不放心的话可以顺手查一下进程名tasklist | findstr 12345注意taskkill /f强杀进程前务必确认这个PID对应的不是系统关键进程或你要保留的数据服务。我一个朋友当年用这招顺手杀了数据库进程结果开发环境数据没落盘直接没了。先tasklist看一眼再动手几秒钟的事。除了端口网络排查还有一组高频命令ipconfig /all :: 查看完整网卡配置 ipconfig /flushdns :: 刷新DNS缓存 ping 192.168.1.1 :: 测试连通性 tracert www.example.com :: 查路由路径 nslookup www.example.com :: 解析域名IPipconfig /flushdns很实用有些时候网页打不开换了DNS还是旧的解析结果刷新一下缓存通常就好了。3.2 用CMD开启Telnet服务以及测试端口“用cmd命令开启telnet服务”这个热搜词得分清一件事Windows上说的Telnet通常不是指开启Telnet服务器而是客户端经常没装。也就是说你想用telnet命令去测试某个端口通不通系统会提示“不是内部或外部命令”因为默认没启用Telnet客户端。启用Telnet客户端用DISM命令一行搞定需要管理员CMDdism /online /enable-feature /featurename:TelnetClient /all跑完提示“操作成功完成”关闭CMD重新打开telnet命令就能用了。如果是图形界面操作也可以去“控制面板 程序 启用或关闭Windows功能”勾选“Telnet客户端”但明显没有命令快。telnet客户端最常见的使用场景不是进设备Shell而是测试一个端口通不通telnet 192.168.1.10 3306如果端口开放窗口会清空并显示一个黑底光标有的服务会返回版本信息说明TCP层通如果提示“无法打开到主机的连接”说明对方端口不通或防火墙拦了。退出telnet的方式有点反直觉先按Ctrl]进入转义模式再在提示符下输入quit回车。一个值得注意的点是telnet是明文协议在生产环境测试远程设备登录时尽量不用它日常只需要把它当端口探测工具用。现在的系统里Test-NetConnectionPowerShell是更好的替代但CMD里telnet依然是多系统通用、最轻量的一招。3.3 ADB、证书等外设与环境命令“cmd怎么调出adb”也是高频搜索。ADB是安卓调试桥装完Android SDK Platform Tools后你需要能在CMD里执行adb命令。问题通常出在没配置环境变量CMD无法找到adb.exe。解法有两个第一每次使用时切换到adb所在目录cd /d D:\android\platform-tools adb devices第二把platform-tools目录加到系统PATH环境变量。用命令行修改PATH的方式setx PATH %PATH%;D:\android\platform-tools关掉CMD重开adb就可以全局使用了。setx是写永久环境变量的命令注意它会把当前CMD里的PATH整段读出来再追加如果重复执行多次会导致PATH变量里出现大量重复路径所以只跑一次就行。另外网上搜“windows 怎么安装pem”的其实也是命令行活。安装证书文件.pem或.cer到Windows证书存储区用certutilcertutil -addstore -f Root D:\certs\my-cert.pem-addstore表示添加证书Root指定存储区是“受信任的根证书颁发机构”-f表示强制覆盖同名证书。有些企业内网或自建服务需要安装自己的CA证书跑这么一条命令就完了比去图形界面的证书管理单元里一步步点省事多了。4. 脚本自动化批处理、静默运行与联动Python4.1 从零写一个batecho、set、if、forCMD做自动化的基本单位是bat文件批处理文件。我的看法是你不需要精通 Perl 或 Python 才能处理重复工作很多Windows日常自动化用bat就能解决而且拿到任何Windows机器都能跑没有依赖。一个bat文件的基础骨架大概长这样echo off setlocal enabledelayedexpansion title 批量处理脚本 set DIRD:\backup if exist %DIR% ( echo 目录已存在 ) else ( mkdir %DIR% echo 已创建目录 %DIR% ) for /l %%i in (1,1,5) do ( echo 第 %%i 次处理 ) pause逐行拆解echo off关闭回显不显示每条命令本身只有输出结果。这是bat第一行的“定式”。setlocal enabledelayedexpansion启用变量延迟展开。为什么要它bat里的%var%在解析整个代码块时就被替换了如果在同一括号块内多次改变变量值不用延迟展开会拿到旧值。这个坑我当年调试了一个小时才反应过来。set DIRD:\backup定义变量用%DIR%引用。if exist判断路径是否存在括号里写分支代码。for /l %%i in (1,1,5)循环从1到5步长1。注意在bat文件里循环变量要写成%%i直接命令行里才是%i。pause窗口执行完不直接关闭方便看输出。批量重命名、批量拷贝、定时清空日志这几类需求用这种骨架改一改就能落地。4.2 goto子程序与call“cmd goto子”这个搜索词我猜是想问批处理里goto怎么用。goto是跳转命令配合标签可以实现脚本内的分支和子程序。最简单的用法echo off goto :main :cleanup echo 正在清理临时文件... del /q %TEMP%\*.tmp 2nul goto :eof :main echo 脚本开始 call :cleanup echo 脚本结束 pause关键点:cleanup是标签标签名以冒号开头。goto :main跳转到main标签。call :cleanup调用子程序执行完goto :eof返回调用处。goto :eof中的:eof是内置标签表示脚本末尾相当于return。写菜单式脚本时goto特别有用:menu cls echo 1. 备份文件 echo 2. 清理日志 echo 3. 退出 set /p choice请选择 if %choice%1 goto :backup if %choice%2 goto :clean if %choice%3 exit goto :menu注意goto跳转容易让脚本逻辑变混乱所以现代脚本尽量少用能用call拆成子程序就不要用一串goto。我在批处理里唯一保留大量goto的场景就是菜单处理和错误跳转别的都用call :子程序结构化。4.3 静默运行与后台执行“windows实现cmd静默运行”这个需求很实际。比如开机自动执行清理脚本或者计划任务跑一个bat不想让黑窗口弹出来吓人。几种方案我都试过方案A最小化窗口运行。启动脚本时用start /minstart /min D:\scripts\cleanup.bat窗口最小化到任务栏但不完全消失。方案B用计划任务“不管用户是否登录”运行。在taskschd.msc里创建任务触发器设置开机或指定时间操作指向bat文件勾选“不管用户是否登录”且“使用最高权限运行”任务在后台执行不弹窗口。这是最正规的做法。方案C用VBS脚本包装bat完全隐藏窗口。新建一个run.vbs内容Set ws CreateObject(Wscript.Shell) ws.Run cmd /c D:\scripts\cleanup.bat, 0, Falsews.Run的第二个参数0表示隐藏窗口。双击这个vbsbat会在后台跑没有窗口出现。我的建议如果只是临时跑一次用start /min如果要长期定时跑用计划任务如果有洁癖非要看不见窗口再用VBS包装。顺带提醒一句隐藏窗口跑脚本有利有弊——出了问题你看不到输出所以正式脚本里一定要加日志比如echo %date% %time% 执行成功 D:\logs\script.log这样静默完还能回头查。4.4 CMD与Python联动“python连接cmd”这个热搜词实际上说的是两个方向的联动方向一在CMD里运行Python脚本。前提是已经装好Python并加入PATH。验证方式python --version where pythonWindows上有时python命令不好使可以试py -V——py是Python官方在Windows上提供的启动器比直接敲python更可靠。运行脚本就python D:\projects\test.py也可以在CMD里直接传参数python D:\projects\test.py --input data.txt --output result.txt不想建文件时还能用-c直接执行一行代码python -c import os; print(os.getcwd())方向二在Python代码里调用CMD。比如用Python写了一个自动化脚本中间需要调用系统命令import subprocess # 执行CMD命令并获取输出 result subprocess.run([ipconfig, /all], capture_outputTrue, textTrue, encodinggbk) print(result.stdout[:500]) # 执行带管道的复杂命令需要用shellTrue result2 subprocess.run(netstat -ano | findstr :8080, shellTrue, capture_outputTrue, textTrue, encodinggbk) print(result2.stdout)注意编码问题Windows中文系统CMD输出默认是GBKsubprocess里如果不指定encodinggbk读出来的中文大概率乱码。这是踩过坑才记得住的细节。双向打通之后你就可以做很多事了Python脚本负责逻辑CMD负责系统操作一个定时任务配合起来Windows上的自动化基本够用。4.5 环境部署安装Git、启动Elasticsearch、安装Docker开发环境部署这事儿CMD里也有一席之地。搜索热词里“windows安装git命令”“windows启动elasticsearch”“docker安装windows”都指向同一类需求命令行装工具、起服务。先看Git。官方安装包是图形界面但命令行也能装——Windows 10以上系统自带winget包管理器winget install Git.Git装完不一定立刻能用重开CMD后验证git --version如果提示“不是内部或外部命令”多半是安装时没勾选“将Git加入PATH”重装一次或手动把C:\Program Files\Git\cmd加进PATH即可。再看Elasticsearch。这个项目在Windows下的启动方式就是运行bat脚本。假设解压到了D:\elasticsearch-8.12.0cd /d D:\elasticsearch-8.12.0\bin elasticsearch.bat跑起来后验证curl http://localhost:9200返回带版本信息的JSON就说明服务正常。常见坑是JDK版本不匹配或内存不够启动日志里会直接报错把报错信息复制去搜比瞎试强。Docker在Windows上现在的标准方案是Docker Desktop它依赖WSL2。安装同样可以走wingetwinget install Docker.DockerDesktop装完在CMD里验证docker --version docker ps如果docker ps报错“error during connect”大概率是Docker Desktop还没启动或者没用管理员身份运行CMD。Windows上所有需要访问系统服务或docker守护进程的命令建议养成管理员CMD操作的习惯。这里有个通用排查技巧安装新工具后命令无法识别第一反应不是重装而是用where 命令名看系统能不能找到可执行文件。找不到就是PATH问题找得到再谈别的。这个思路能省一半时间。5. 常见问题排查打不开CMD、乱码、闪退5.1 WinR 输入cmd没反应“为什么win加r打不开cmd”能成热搜说明这不是个例。我拆解一下可能原因系统环境变量被改坏%SystemRoot%\System32被从PATH里移除。计算机策略或杀软拦截了cmd.exe的执行。系统文件损坏cmd.exe本身被破坏。注册表里关于命令行的项被篡改。排查和解决步骤第一步直接去资源管理器地址栏输入C:\Windows\System32\cmd.exe看看能不能打开。如果能说明cmd.exe本身还在问题多半出在环境变量或关联设置。第二步右键“此电脑 属性 高级系统设置 环境变量”检查Path里有没有%SystemRoot%\System32没有就加上。这个路径是Windows命令解释器和一堆系统工具的“家”丢了它不光cmd打不开很多命令都会失效。第三步如果直接双击也打不开用管理员身份打开PowerShell这个肯定能开跑sfc /scannow等系统文件检查完成看是否修复了cmd.exe。如果还是不行检查系统里有没有安装过什么“安全防护类”软件把cmd列为高风险程序——有些软件激进策略会拦截cmd启动。这种时候在杀软里加白名单即可不建议关掉杀软本身。提醒有人为了解决这个问题会从别的电脑复制cmd.exe覆盖系统文件。这条路风险很高系统文件版本不匹配会导致更多问题优先用sfc /scannow修复别手动覆盖。5.2 CMD窗口中文乱码CMD里中文变成锟斤拷或者方框几乎是所有Windows命令行使用者都遇到过的。原因不复杂CMD窗口默认的代码页code page和文件/命令输出的编码不一致。Windows中文系统里CMD默认代码页经常是936GBK而不少新工具输出的是UTF-8。两边对不上文字就花了。临时切换代码页的办法chcp 6500165001是UTF-8的代码页编号936是简体中文GBK。切换完关掉重开就不生效了所以如果跑一个bat脚本要固定UTF-8环境可以在脚本开头加echo off chcp 65001 nulnul是把“Active code page: 65001”这行提示吞掉输出界面干净一点。但有个细节贼坑bat文件本身如果保存的是GBK编码脚本里有中文echo你却在第一行chcp 65001切到UTF-8那脚本里中文反而变成乱码。所以要么脚本里的中文和chcp切换的编码保持一致要么干脆脚本里别写中文提示全部用英文免得折腾。Windows Terminal里也可以在设置里把配置文件默认编码改成UTF-8一劳永逸。记录一个判断思路乱码不是CMD坏了是“编码契约”没有对齐。先搞清你的命令输出是什么编码、CMD窗口当前是什么代码页两边对齐自然就好了。5.3 脚本一执行就闪退“windows脚本命令闪退”这词我也搜到过说的是bat双击之后窗口一闪而过根本看不清发生了什么。本质原因就一个脚本执行过程中遇到错误或结束后窗口自动关闭而你恰好没看到输出。解决思路很简单让窗口执行完不关。两种方式方式一给bat加pause脚本最后加一行echo off echo 测试输出 pause方式二手动用CMD保留窗口执行cmd /k D:\scripts\test.bat/k参数表示执行完命令后保持窗口打开。这样就算脚本报错你也能看到错误信息。如果脚本在实际执行时会“跑着跑着就退出”则要按以下顺序排查路径问题脚本里引用的路径带空格没有用引号包围。比如cd C:\My Documents\test必须写成cd C:\My Documents\test。变量问题变量名拼错或未定义就使用打印出来是空的。编码问题脚本保存成了UTF-8带BOM首行的echo off前面埋伏了不可见字符导致第一行没生效。权限问题脚本要写系统目录或登录表但没有管理员权限命令静默失败。被安全软件拦截脚本里可能触发了修改系统设置的操作被拦截后进程直接退出。我最推荐的调试习惯是在脚本关键位置加echo 当前执行到第N步和pause一行一行推进出了错就能定位到具体位置。等脚本稳定了再把这些调试信息删掉或者改成写日志。另外安装新工具后敲命令提示“不是内部或外部命令”我在4.5里提过用where排查PATH。这个思路同样适用于这里先确认你的工具是否真的装到了系统能找到的位置。6. 终端体验升级与我的习惯6.1 把CMD装进Windows Terminal如果你还在用默认的老式CMD窗口我建议你花两分钟换成Windows Terminal。Windows 11 26H2之后系统已经把Windows Terminal设为默认终端但如果你用的系统版本较老或者不小心改过默认设置也可以手动安装winget install Microsoft.WindowsTerminal安装后在Windows Terminal的设置里可以把默认配置文件选为“命令提示符”并排可以加PowerShell、WSL等配置。这样你平时看CMD输出享受的是标签页、多窗口、CtrlShiftT新标签、CtrlShiftW关标签这些现代终端体验但底层命令还是那套CMD零学习成本。为什么我建议把CMD放在Windows Terminal里跑因为老式CMD窗口有几个硬伤窗口宽度拉不开导致长日志折行、字体渲染不好看、快捷键少。Windows Terminal把这些都补上了。而且它的颜色方案可以自定义长时间盯日志眼睛没那么累。6.2 提升效率的几个小习惯最后分享几个我用了很多年的命令行小习惯都是能实实在在省时间的第一用doskey给常用长命令做宏。CMD里每次都敲一长串netstat -ano | findstr其实挺烦可以写个宏doskey npnetstat -ano $* doskey pstasklist $*把这两行写进一个autorun注册表项或每次启动脚本里之后敲np :8080就等价于netstat -ano | findstr :8080。第二用clip把命令输出直接送进剪贴板。比如ipconfig /all | clipclip是Windows自带的命令意思是“把输入复制到剪贴板”。输出很长的时候不必手动选中复制直接管道给clip然后CtrlV粘贴到聊天框或邮件里发给同事看结果非常顺手。第三把常用脚本统一放一个目录并加入PATH。我自己习惯建D:\scripts把常用bat文件都放进去然后把这个目录加进PATH环境变量。这样全局任何位置直接敲脚本名就能运行不用每次打全路径。第四重视命令历史。CMD里按F7可以弹出一个历史命令列表上下方向键可以快速翻回去Tab可以自动补全文件名、目录名。这些小细节看起来不起眼但实际用下来每天能省不少按键次数。我个人在实际操作中的体会是CMD这东西学的时候觉得又土又麻烦但越用到后期越觉得它像一把瑞士军刀。它没有图形界面那些花哨能力但胜在稳定、直接、到处都有。我处理问题习惯永远是先用CMD查状态、定位原因再决定要不要上工具。所以我也建议你但凡电脑出问题不要急着装各种“清理大师”和“修复专家”先开一个CMD窗口试试用系统自带的命令去诊断、去修复。多敲几次很多问题反而简单了。最后再分享一个小技巧CMD窗口左上角图标点开进入“属性”可以把“快速编辑模式”勾上。开了之后在窗口里选中文本就是复制右键就是粘贴比CtrlC/CtrlV都顺手。这个设置藏得深但知道的人都说好用。