Skip to main content

文件与目录操作(CMD / PowerShell)

浏览与切换(CMD)​

cd /d D:\project         :: 切换盘符必须带 /d
dir :: 列出当前目录
dir /a :: 显示包括隐藏和系统文件
dir *.txt :: 通配符过滤
dir /s :: 递归列出
cls :: 清屏
where notepad :: 查找命令/程序路径(相当于 which)

PowerShell 等价(推荐)​

Set-Location D:\project     # 切换目录
Get-ChildItem # 列目录(ls)
Get-ChildItem -Force # 含隐藏文件
Get-ChildItem -Recurse # 递归
Clear-Host # 清屏
Get-Command notepad # 查找程序路径

创建 / 复制 / 移动 / 删除​

mkdir dir                  :: 创建目录(md 同义)
type nul > file.txt :: 创建空文件(CMD)
echo hello > file.txt :: 写入内容
copy src dst :: 复制
copy /Y src dst :: 覆盖不询问
xcopy src dst /E /I /Y :: 递归复制目录(含空目录)
robocopy src dst /E :: 更强大的复制(详见下文)
move src dst :: 移动/重命名
ren old new :: 重命名(只改名字)
del file :: 删除文件
del /f /q file :: 强制静默删除
rmdir dir :: 删除空目录
rmdir /s /q dir :: 递归强制删除目录 ⚠️
del /s *.tmp :: 递归删除匹配文件

PowerShell 等价:

New-Item -ItemType Directory -Path D:\x\y     # 创建目录(含父级)
New-Item -ItemType File -Path file.txt # 创建空文件
Set-Content -Path file.txt -Value "hello" # 写入(覆盖)
Copy-Item -Recurse src dst # 复制
Move-Item src dst # 移动/重命名
Remove-Item file -Force # 删除文件
Remove-Item -Recurse -Force dir # 递归删除 ⚠️(rm -rf 等价)

robocopy(Windows 版 rsync)​

robocopy "C:\src" "D:\dst" /E           :: 递归复制全部(含空目录)
robocopy src dst /MIR :: 镜像同步(删除目标多余文件)⚠️
robocopy src dst /E /XD node_modules :: 排除目录
robocopy src dst /E /XF *.log :: 排除文件
robocopy src dst /E /MT:16 :: 多线程复制(默认 8)
robocopy src dst /E /R:1 /W:1 :: 重试 1 次、等待 1 秒(快)
robocopy src dst backup.log /E /LOG:D:\backup.log :: 结果写入日志

退出码含义:0 无文件复制,1 复制成功,2 有额外文件,按位相加;>=8 表示出错。

合并与查看​

type file.txt              :: 查看文件内容
type file1 file2 > all.txt :: 合并文件
more file.txt :: 分页查看
findstr keyword file.txt :: 搜索文件内容(相当于 grep)
find /c "error" file.txt :: 统计次数

环境变量​

set                        :: 查看全部环境变量
set PATH :: 查看某个变量
set MYVAR=hello :: 临时设置(当前窗口)
echo %PATH% :: 使用变量

PowerShell:

$env:PATH
[Environment]::SetEnvironmentVariable("MYVAR", "hello", "User") # 永久(用户级)

永久修改环境变量推荐用 GUI:sysdm.cpl → 高级 → 环境变量。

常用技巧​

  • CMD 中路径含空格要加引号:cd "C:\Program Files"
  • 通配符 * ? 在 CMD 与 PowerShell 中均可用
  • 文件名带中文:PowerShell 更稳妥,编码处理更智能
  • 查询某命令参数:命令 /?(CMD)或 Get-Help 命令(PowerShell)