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

PowerShell脚本追加文件时遇被占用错误的解决方法

解决PowerShell写入文件时的“文件被占用”错误

问题场景

编写PowerShell脚本从JSON文件提取指定数据并追加到.txt文件,执行初始代码时出现大量文件占用错误,导致导出数据截断。

初始代码:

$columns = "ID_Report","Name","Created_by","Last_mod_by"

$file = Get-Content -Path "W:\Personal\Ulrich\VA-Scraping\reports.json" -Raw | ConvertFrom-Json

$key_first = "items"

Write-Output "$($columns[0]);$($columns[1]);$($columns[2]);$($columns[3]);$($columns[4])" > xxx.txt

foreach ($record in $file){
    if ($record | Select-Object -ExpandProperty $key_first -ErrorAction SilentlyContinue){ 
        foreach ($item in $record.items){
            "$($item.id);$($item.name);$($item.createdBy);$($item.modifiedBy)" | Add-Content "W:\Personal\Ulrich\Skriptiky\xxx.txt" 
        }
    }

}

错误信息

Add-Content : The process cannot access the file 'W:\Personal\Ulrich\Skriptiky\xxx.txt' because it is being used by another process.
At line:12 char:82
+ ... tem.modifiedBy)" | Add-Content "W:\Personal\Ulrich\Skriptiky\xxx.txt"
+                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (W:\Personal\Ulrich\Skriptiky\xxx.txt:String) [Add-Content], IOException
    + FullyQualifiedErrorId : GetContentWriterIOError,Microsoft.PowerShell.Commands.AddContentCommand

解决方案

调整代码后问题得到解决,优化后的代码如下:

$columns = "ID_Report","Name","Created_by","Last_mod_by"

$file = Get-Content -Path "W:\Personal\Ulrich\Skriptiky\VA-Scraping\reports.json" -Raw | ConvertFrom-Json
$outfile = "W:\Personal\Ulrich\Skriptiky\VA-Scraping\vystupy\$(Get-Date -f yyyyMMdd).txt"

$key_first = "items"

Write-Output "$($columns[0]);$($columns[1]);$($columns[2]);$($columns[3]);$($columns[4])" | Out-File -FilePath $outfile

$file | ForEach-Object {$_.items } | ForEach-Object {Write-Output "$($_.id);$($_.name);$($_.createdBy);$($_.modifiedBy)"} |  Add-Content "$outfile"

优化要点

  • 用统一变量$outfile管理输出路径,避免路径不一致引发的潜在问题
  • 改用管道式ForEach-Object替代嵌套foreach循环,减少文件频繁打开/关闭操作,降低文件被占用的概率
  • 输出文件名加入日期戳,避免重复执行时覆盖原有文件

内容的提问来源于stack exchange,提问作者Tomáš Ulrich

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:10:18