PowerShell:使用变量存储路径移文件触发PathNotFound错误求助
PowerShell移动文件提示PathNotFound的解决方法
问题分析
你遇到的PathNotFound错误来自三个隐藏问题:
- TXT文件读取路径错误:用
Get-Content $file.Name时,若当前工作目录不是.\PowerShell_script\,系统会在当前目录找txt文件,而非目标文件夹。 - 文件名末尾带空格:TXT第7行的路径末尾有多余空格,导致
Split-Path提取的文件名带空格,拼接后的路径指向不存在的文件。 - 路径拼接不严谨:直接用
+拼接路径容易出现分隔符问题,比如漏加或多加斜杠。
修复后的代码
$importfolder = ".\PowerShell_script\" $outputfolder = ".\PowerShell_script\Output\" $filesTXT = ".\PowerShell_script\*.txt" # 直接获取FileInfo对象,而非仅文件名,避免路径问题 $list = Get-ChildItem -Path $filesTXT foreach($file in $list) { # 用文件的完整路径读取内容,确保不会找不到txt文件 $imagetemp = Get-Content $file.FullName | Select-Object -Skip 6 -First 1 # 先去除字符串首尾空格,再提取文件名 $imagename = Split-Path $imagetemp.Trim() -leaf # 用Join-Path安全拼接路径,避免分隔符错误 $imagefile = Join-Path -Path $importfolder -ChildPath $imagename Write-Host "`n图片原始路径:" $imagetemp Write-Host "`n提取的文件名:" $imagename Write-Host "`n待移动的完整路径:" $imagefile # 先检查文件是否存在,再执行移动 if (Test-Path $imagefile) { Move-Item $imagefile -Destination $outputfolder Write-Host "`n文件移动成功" } else { Write-Host "`n错误:文件不存在 - $imagefile" } }
关键修复点说明
- 用FileInfo对象处理文件:
Get-ChildItem直接返回的对象包含FullName属性,确保读取txt文件时路径绝对正确。 - 去除字符串首尾空格:
$imagetemp.Trim()去掉TXT行末尾的多余空格,保证提取的文件名准确。 - 用Join-Path拼接路径:自动处理路径分隔符,避免手动拼接时的错误。
- 增加存在性检查:用
Test-Path提前验证文件是否存在,避免无意义的错误提示,同时输出明确的状态信息。
内容的提问来源于stack exchange,提问作者Jana
相关产品推荐
相关产品推荐

