我有一个PowerShell脚本,可以在处理非常大的XML时将大量的行转储到csv文件中。

在xml阅读器的while读取期间,我将每一行写入csv文件,如下所示:

  $newline | add-content -path $csv_file

这适用于99%,但偶尔我会在日志“add-content:流不可读”中看到1或2亿兆的内容,我想是因为它正忙于向其写上一行。

有什么解决方法吗?

最佳答案

如果您不想调用Windows API,这是一种PowerShell方法。在do循环中放入try catch块以重试直到成功。

    $isWritten = $false

    do {
        try {
            Add-Content -Path $csv_file -Value $newline -ErrorAction Stop
            $isWritten = $true
        }
        catch {
        }
    } until ( $isWritten )
}

08-19 23:01