PowerShell写入文件到新文件夹报错:路径出现Test2\C求助
问题原因与解决方法
错误原因
你遇到的路径错误是因为$f是Get-ChildItem返回的FileInfo对象,直接将其插入路径字符串时,PowerShell会解析出该对象的完整绝对路径(比如C:\Users\Laptop\Desktop\Test1\test.txt),导致最终目标路径变成~\Desktop\Test2\C:\Users\Laptop\Desktop\Test1\test.txt。系统会把路径开头的C误认为是目标文件名,从而出现Test2\C的错误路径。
修正后的代码
直接使用文件的纯文件名而非完整路径即可解决问题:
$files = Get-ChildItem "~\Desktop\Test1\*.txt" foreach ($f in $files) { Get-Content $f | Where-Object { -not $_.Contains('VOID') } | Set-Content "~\Desktop\Test2\$($f.Name)" }
更规范的写法(推荐)
用Join-Path来拼接路径,避免字符串拼接可能出现的格式问题:
$files = Get-ChildItem "~\Desktop\Test1\*.txt" $targetDir = "~\Desktop\Test2" foreach ($f in $files) { $targetPath = Join-Path -Path $targetDir -ChildPath $f.Name Get-Content $f | Where-Object { -not $_.Contains('VOID') } | Set-Content $targetPath }
内容的提问来源于stack exchange,提问作者Kev Wain
相关产品推荐
相关产品推荐

