You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell使用Move-Item移动文件时报源与目标路径相同如何解决

移动子文件夹内容到父目录操作方案

需求说明

将VPA_IMAGES目录下vpa_images子文件夹内的所有文件移动到上级VPA_IMAGES目录,完成后删除空的vpa_images子文件夹。
目录结构示意图如下:
目录结构示意图

原代码报错原因

你编写的代码尝试将vpa_images子文件夹整体移动到父级VPA_IMAGES目录下,Windows系统文件路径不区分大小写,系统判定源路径和目标路径指向同一个位置,因此抛出「源和目标路径必须不同」的错误。
原错误代码:

$new_path=$vpa_images+'\vpa_images'
echo $new_path
echo $vpa_images
Move-Item $new_path $vpa_images

报错信息:

D:\RAW\st\Docum\2021-10-12\VPA_IMAGES\vpa_images
D:\RAW\st\Docum\2021-10-12\VPA_IMAGES
Move-Item : Source and destination path must be different.
At D:\powershwll\automationforstaples.ps1:49 char:1
+ Move-Item $new_path $vpa_images
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (D:\RAW\St...AGES\vpa_images:DirectoryInfo) [Move-Item], IOException
    + FullyQualifiedErrorId : MoveDirectoryItemIOError,Microsoft.PowerShell.Commands.MoveItemCommand

正确实现代码

$new_path = $vpa_images + '\vpa_images'
# 移动子文件夹内所有内容到上级VPA_IMAGES目录
Move-Item -Path "$new_path\*" -Destination $vpa_images -Force
# 删除已清空的vpa_images子文件夹
Remove-Item -Path $new_path -Force

注意事项

  • 源路径末尾添加的\*是通配符,用于匹配子文件夹下所有文件、子目录项
  • -Force参数会在父目录存在重名文件时直接覆盖,如果你需要保留重名文件、避免误覆盖,可以删除该参数
  • 若子文件夹内存在嵌套的子目录,上述代码也会同步移动所有嵌套内容

内容的提问来源于stack exchange,提问作者Dikshit Karki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:54:04