视频加载失败

Windows 命令行(CMD-PowerShell)

1233 字
6 分钟
Windows 命令行(CMD-PowerShell)

引言#

虽然图形界面越来越完善,但命令行依然是 Windows 中最强大的工具。批处理脚本能自动化重复操作,一行命令 能做 GUI 里点半天的事。本文总结了 CMD 和 PowerShell 的常用语法和技巧。

一、CMD 特殊符号详解#

@ — 隐藏命令回显#

Terminal window
@echo a ; 只输出 "a"
echo b ; 先输出 "echo b",再输出 "b"

% / %% — 变量引用#

  • %var% — 引用普通变量
  • %0~%9 — 批处理参数(%0 为脚本自身路径)
  • %%i — for 循环中的变量

最常用的参数扩展:

写法含义
%~dp0当前脚本所在目录(最常用,没有之一)
%~nx0文件名 + 扩展名
%~n0文件名(无扩展名)
%~x0扩展名
%~f0完整路径
%~d0盘符
%~p0路径
%~s0短路径(8.3 格式)

:: 和 : — 标签与注释#

Terminal window
:: 这是注释(推荐)
rem 这也是注释(但会解析特殊字符)
:label ; 定义标签,可用 goto label 跳转

重定向与管道#

符号含义
>覆盖写入文件
>>追加写入文件
<从文件读取输入
|管道:前一个命令的输出传给后一个命令
^转义特殊字符(>, |, & 等)

命令连接符#

符号含义
&无条件依次执行
&&前一条成功才执行
||前一条失败才执行

() — 语句块#

Terminal window
(
echo 第一行
echo 第二行
)>test.txt

二、申请管理员权限#

批处理脚本中申请提权的标准模板,有三种常见风格:

最简版(一行搞定)#

Terminal window
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

带提示版#

Terminal window
@echo off
chcp 65001>nul
net session 1>NUL 2>NUL||(mshta vbscript:CreateObject^("Shell.Application"^).ShellExecute^("%~0"," %* ::","","runas",1^)^(window.close^)&&exit)

一闪而过版#

Terminal window
cd/d"%~dp0"&(cacls "%SystemDrive%\System Volume Information" >nul 2>nul)||(start "" mshta vbscript:CreateObject^("Shell.Application"^).ShellExecute^("%~nx0"," %*","","runas",1^)^(window.close^)&exit)

ShellExecute 参数说明#

Shell.ShellExecute "程序", "参数", "目录", "操作", "窗口类型"

操作参数: open(打开)、runas(管理员运行)、edit(编辑)、print(打印)

窗口类型: 0=隐藏 1=正常 2=最小化 3=最大化

三、CMD 代码页与乱码解决#

临时切换#

Terminal window
chcp 65001 ; UTF-8
chcp 936 ; GBK(简体中文默认)
chcp 950 ; 繁体中文 Big5

永久修改注册表#

[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:0000fde9 ; 65001 = UTF-8

四、findstr 命令详解#

CMD 版的 grep:

Terminal window
findstr [参数] "字符串" [文件]
/B 行首匹配
/E 行尾匹配
/R 正则表达式
/S 递归搜索
/I 不区分大小写
/N 显示行号
/M 只显示文件名
/V 不包含匹配的行
/C:str 使用文字字符串(允许空格)

五、wmic 命令参考#

WMIC 是 Windows 强大的管理工具,可以查询和管理几乎一切系统资源。

进程管理#

Terminal window
;列出所有进程及命令行参数
wmic process get caption,commandline /value
;查询特定进程
wmic process where caption="notepad.exe" get caption,commandline /value
;终止进程
wmic process where name="qq.exe" call terminate

硬件信息#

Terminal window
;磁盘信息
wmic DISKDRIVE get deviceid,Caption,size,InterfaceType
;CPU 信息
wmic cpu get name,addresswidth,processorid
;内存信息
wmic memlogical get totalphysicalmemory
;主板信息
wmic BaseBoard get Manufacturer,Product,Version,SerialNumber

服务管理#

Terminal window
wmic SERVICE where name="tlntsvr" set startmode="Auto"
wmic SERVICE where name="tlntsvr" call startservice
wmic SERVICE where name="ShardAccess" call stopservice

共享管理#

Terminal window
;建立共享
WMIC SHARE CALL Create "","test","3","TestShareName","","c:\test",0
;删除共享
WMIC SHARE where name="C$" call delete

六、PowerShell 命令别名速查#

完整别名列表在 PowerShell 中运行 Get-Alias 查看。

完整命令别名
Get-ChildItemdir, ls, gci
Get-Contentcat, gc, type
Get-Processps, gps
Get-Servicegsv
Set-Locationcd, chdir, sl
Copy-Itemcopy, cp, cpi
Move-Itemmove, mv, mi
Remove-Itemdel, rm, rd, ri
ForEach-Object%, foreach
Where-Object?, where
Select-Objectselect
Sort-Objectsort
Get-Helphelp, man
Invoke-WebRequestcurl, wget, iwr
Set-Clipboardscb
Get-Clipboardgcb
Stop-Processkill, spps
Start-Sleepsleep
New-Itemni
Select-Stringsls

七、net 命令参考#

Terminal window
;用户管理
net user 用户名 密码 /add ; 建立用户
net user guest /active:yes ; 激活 guest
net localgroup administrators 用户名 /add ; 提权到管理员
;服务管理
net start 服务名
net stop 服务名
;共享
net share ; 查看本地共享
net use \\IP\ipc$ ; 建立 IPC 连接
net view ; 查看局域网共享
;网络
netstat -an ; 查看所有端口

八、端口占用查询与终止#

Terminal window
@echo off
chcp 65001>nul
set /p port=查询端口:
echo 端口占用:
netstat -ano | findstr /r /c:":%port%.*LISTENING"
set /p pid=终止进程PID:
taskkill /pid %pid% /f
pause

九、端口转发(netsh)#

Terminal window
;显示所有端口代理
netsh interface portproxy show all
;添加端口转发
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=2222 connectaddress=172.17.39.183 connectport=2222
;删除端口转发
netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=2222
;重置所有规则
netsh interface portproxy reset

十、DLL 注册/反注册#

Terminal window
;注册
C:\Windows\system32\regsvr32.exe /s some-dll
C:\Windows\SysWOW64\regsvr32.exe /s some-dll
;反注册
C:\Windows\system32\regsvr32.exe /s /u some-dll

十一、一键操作脚本#

一键注销#

Terminal window
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
logoff

一键锁屏#

Terminal window
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
rundll32.exe user32.dll LockWorkStation

一键关机#

Terminal window
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
shutdown.exe -p

关闭显示器#

Terminal window
powershell (Add-Type '[DllImport(\"user32.dll\")]^public static extern int PostMessage(int hWnd, int hMsg, int wParam, int lParam);' -Name a -Pas)::PostMessage(-1,0x0112,0xF170,2)

不显示 CMD 窗口运行命令#

Terminal window
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
;在这里放要执行的命令
winver

十二、环境变量备份#

用户 Path:
D:\dependence\anaconda3;...android\platform-tools;...
系统 Path:
C:\Windows;C:\Windows\system32;...%JAVA_HOME%\bin;...
ANDROID_SDK = D:\dependence\Sdk\android\
JAVA_HOME = D:\dependence\Sdk\java\openjdk-11

小结#

命令行是 Windows 的瑞士军刀。掌握 CMD 符号、变量扩展和提权模板,你就能写出强大的批处理脚本。配合 PowerShell 的丰富命令集,几乎可以做任何系统管理操作。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Windows 命令行(CMD-PowerShell)
https://blog.cn3.top/blog/posts/命令行/
作者
CC
发布于
2026-06-23
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
CC
嘻嘻.
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签
最新动态
站点统计
文章
32
分类
7
标签
54
总字数
29,119
运行时长
0 天
上次更新
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.16.9
文章许可
CC BY-NC-SA 4.0
文章目录