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

使用Move-Item时PowerShell文件夹路径报错问题求助

问题解决:Move-Item "找不到路径的一部分" 错误修复

核心修复方案

将Move-Item的-Path参数从$file改为$file.FullName,修改后的代码片段如下:

# Move the file to the new folder structure
Move-Item -Path $file.FullName -Destination $folderPathSub

问题原因

当用Get-ChildItem获取文件对象时,直接传递$file给Move-Item的-Path参数,若当前工作目录与$sourcePath不一致,PowerShell可能会以相对路径解析文件,导致找不到目标文件。而$file.FullName会传递文件的完整绝对路径,彻底避免路径解析错误。

额外优化建议

为提升脚本健壮性,可添加以下防护逻辑:

  • 检查文件名是否包含至少一个下划线,避免Split('_')索引越界报错
  • 合并文件夹创建步骤,减少重复代码

优化后的完整脚本:

$sourcePath = "C:\Users\Home\..."

# Get a list of all files in the source folder
$files = Get-ChildItem -Path $sourcePath -File -Filter *.zip

# Loop through each file
foreach ($file in $files) {
    # Split filename and validate structure
    $nameParts = $file.BaseName.Split('_')
    if ($nameParts.Count -lt 2) {
        Write-Warning "跳过文件 $($file.Name):文件名需包含至少一个下划线"
        continue
    }

    $part1 = $nameParts[0]
    $part2 = $nameParts[1]

    # Create nested folder structure in one step
    $folderPathSub = Join-Path -Path $sourcePath -ChildPath "$part1\$part2"
    New-Item -ItemType Directory -Path $folderPathSub -Force | Out-Null

    # Move file using full absolute path
    Move-Item -Path $file.FullName -Destination $folderPathSub -Force
}

验证要点

  1. 确认$sourcePath路径正确,末尾无需添加反斜杠
  2. 确保当前用户对$sourcePath及生成的子文件夹有读写权限
  3. 单文件测试时,可先打印路径确认是否正确:
    Write-Host "源文件:$($file.FullName)"
    Write-Host "目标路径:$folderPathSub"
    

内容的提问来源于stack exchange,提问作者Christopher Johnson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:07:18