首页/系统/Windows 运维速查/Move-Item / Rename-Item 移动与改名
PowerShell 基础66 条

Move-Item / Rename-Item 移动与改名

移动文件位置或重命名:Move-Item 跨卷实际是复制+删除;Rename-Item 只改名不移动位置。

Windows 运维速查系统更新于 2026-10-13

移动与改名

Move-Item 移动文件或目录的位置,Rename-Item 只改名字不改变位置。两者容易混:给目录改名应使用 Rename-Item,把新名字写成 Move-Item 的目标路径往往会报路径不存在。

基本信息

适用平台Windows PowerShell 5.1 与 PowerShell 7
语法Move-Item 源 目标;Rename-Item 路径 新名
批量改名Get-ChildItem | Rename-Item -NewName 脚本块,脚本块里用 $_ 引用原对象
跨卷行为跨卷移动本质是复制加删除,耗时长且存在中断风险
覆盖限制目标已存在同名文件会报错,不会自动覆盖
属性保留同一卷内移动通常保留权限与时间戳

典型使用场景

  • 整理文件到归档目录,按类型或日期分门别类
  • 批量改名:统一后缀、加日期前缀、清理多余字符
  • 把日志从临时目录挪到长期保留目录
  • 迁移单个配置文件到指定位置
  • 用 -WhatIf 预演批量改名,确认规则后再真正执行

常用示例

常用示例
# 移动文件到目录
Move-Item D:\old\app.log D:\new\
# 改名:只改最后一段名称
Rename-Item D:\data\app.log app-2026.log
# 批量改名:把 .log 换成 .txt
Get-ChildItem *.log | Rename-Item -NewName { $_.Name -replace 'log$','txt' }
# 预演批量改名,确认规则无误
Get-ChildItem *.log | Rename-Item -NewName { $_.Name -replace 'log$','txt' } -WhatIf
# 移动整个目录
Move-Item D:\data\2025 D:\archive\2025

常见场景与写法

需求写法注意
移动文件Move-Item 源 目标目标目录需要已存在
改名Rename-Item 路径 新名新名只写名称,不含路径
批量改名管道加 -NewName 脚本块先用 -WhatIf 预演
覆盖已有文件先删除或改名目标默认不会自动覆盖
跨卷移动本质是复制加删除大文件耗时长,注意中断风险
-NewName 传入脚本块时可以用 $_ 引用原对象,按规则批量改名,例如统一加前缀、替换字符或按日期重命名。
移动单个文件到目录时,目标最好写成目录路径并以反斜杠结尾;若被理解成新文件名,结果就是改名而不是移动。
批量操作前先把目标列表导出或打印一遍,确认数量与名称符合预期;迁移类任务结束后再对比文件数量,是成本很低的一道保险。

易错点

  • 目标下已存在同名文件时移动会直接报错,需要先处理目标文件
  • 给目录改名却把新名字写成移动的目标路径会报路径不存在,改名应使用改名命令
  • 跨卷移动本质是复制加删除,中途中断可能留下不完整的目标文件
  • 批量改名未先用 -WhatIf 预演,规则写错会一次性改乱大量文件名
  • 移动正在被程序占用的文件会失败,需先停止相关进程

数据来源与参考

  • Microsoft Learn:Move-Item
  • Microsoft Learn:Rename-Item

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌