【问题标题】:Write output to a text file in PowerShell将输出写入 PowerShell 中的文本文件
【发布时间】:2013-08-30 10:00:38
【问题描述】:

我使用以下代码比较了两个文件:

Compare-Object $(Get-Content c:\user\documents\List1.txt) $(Get-Content c:\user\documents\List2.txt) 

如何将其输出写入新的文本文件?我尝试过使用 echo 命令,但我不太了解语法。

【问题讨论】:

    标签: powershell file-io


    【解决方案1】:

    使用Out-File cmdlet

     Compare-Object ... | Out-File C:\filename.txt
    

    (可选)将-Encoding utf8 添加到Out-File,因为默认编码对于许多用途而言并不理想。

    【讨论】:

    • STDOUT(信息)与 STDERR(错误)消息呢?他们都会去外档吗?
    【解决方案2】:

    最简单的方法是重定向输出,如下所示:

    Compare-Object $(Get-Content c:\user\documents\List1.txt) $(Get-Content c:\user\documents\List2.txt) > c:\user\documents\diff_output.txt
    

    > 将导致输出文件在已存在时被覆盖。
    >> 将在输出文件的末尾追加新文本(如果已存在)。

    【讨论】:

    • 这是cmd/dos方法。对于 powershell,我认为 Out-File 是一个更好的习惯
    • @AthomSfere,我同意。我还在学习 PowerShell,旧习惯很难改掉。 :)
    • 这也是Unix的方式,如果你是强行​​使用windows,就是这样。
    【解决方案3】:

    实现此目的的另一种方法是分别在命令执行之前和之后使用Start-TranscriptStop-Transcript 命令。这将捕获包括命令在内的整个会话。

    Start-Transcript

    Stop-Transcript

    对于这种特殊情况,Out-File 可能是您最好的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 2013-11-25
      • 2016-09-10
      相关资源
      最近更新 更多