【问题标题】:Append output to file?将输出附加到文件?
【发布时间】:2017-03-20 13:35:05
【问题描述】:

目前我的脚本不是追加而是删除我现有的文件。如何将我的输出附加到现有 (.csv) 文件?或者我不能将我的 reuslt 附加到文件中。 我正在将每个 xsl 文件的每个 xml 转换为 csv 文件(最后我得到 xml*xsl csv 文件)。我只想拥有与 xsl 文件一样多的 csv 文件。

C:
$converter = New-Object System.Xml.Xsl.XslCompiledTransform;
foreach ($xsl in (Get-ChildItem (Join-Path (Get-Location) "Users\fh0054\Desktop\powershell\xsl") -filter "*.xsl")) {
  $converter.Load($xsl.FullName); 
  foreach ($xml in (Get-ChildItem (Join-Path (Get-Location) "Users\fh0054\Desktop\powershell\xml") -filter "*.xml" )) {
    $converter.Transform($xml.FullName, (Join-Path (Get-Location) ("Users\fh0054\Desktop\powershell\csv\" + $xml.Name + $xsl.Name + ".csv")));
  }
}

(希望大家能明白我的意思。)

【问题讨论】:

    标签: xml powershell csv xslt append


    【解决方案1】:

    您可能会创建某种临时文件来存储数据,然后将新文件数据附加到其中。应该是这样的:

    $tempcsv = 'c:\temp\my.csv'
    $converter = New-Object System.Xml.Xsl.XslCompiledTransform;
    
    foreach ($xsl in (Get-ChildItem (Join-Path (Get-Location) "Users\fh0054\Desktop\powershell\xsl") -filter "*.xsl")) 
    {
      $converter.Load($xsl.FullName); 
      foreach ($xml in (Get-ChildItem (Join-Path (Get-Location) "Users\fh0054\Desktop\powershell\xml") -filter "*.xml" )) 
      {
        $path = (Join-Path (Get-Location) ("Users\fh0054\Desktop\powershell\csv\" + $xml.Name + $xsl.Name + ".csv"))
        $converter.Transform($xml.FullName, $path);
        Import-Csv $path | Export-Csv -Path $tempcsv -Append -NoTypeInformation
      }
    }
    

    【讨论】:

      【解决方案2】:

      要将输出附加到文件,您可以使用以下命令:

      $Path="Full Path of file"
      "Content you want to out file" | Out-file $Path -Append 
      

      希望这能有所帮助。

      【讨论】:

      • 这没有提供问题的答案。
      • 问题是关于如何将输出附加到文件而不删除它。我希望以上答案能达到目的。如果没有,请告诉我你到底在看什么?
      猜你喜欢
      • 2011-11-15
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 2015-09-05
      • 1970-01-01
      • 2013-11-06
      相关资源
      最近更新 更多