【问题标题】:PowerShell: Run batch file and write output to text filePowerShell:运行批处理文件并将输出写入文本文件
【发布时间】:2023-12-20 19:40:01
【问题描述】:

我的 PowerShell 脚本中有一个批处理文件,我想运行该批处理文件并将其输出写入文本文件。我尝试了以下方法:

Start-Process C:\path\file.bat | Out-File C:\path\output.txt

我也尝试使用Tee-ObjectWrite-Output 代替Out-File,但没有写入文本文件。

【问题讨论】:

    标签: powershell batch-file


    【解决方案1】:

    您可以使用 Start-TranscriptStop-Transcript 让 PowerShell 控制台将所有控制台输出写入文本文件。

    像这样使用它:

    Start-Transcript -Path C:\temp\log.txt
    &C:\path\file.bat
    Stop-Transcript
    

    更多详情请见the documentation

    【讨论】:

    • 谢谢!有没有我可以使用的标志,以便批处理文件输出不显示在 Powershell 窗口中?
    • @StewC 嗯,可以将三个命令包装到一个方法中,然后将其输出到Out-Null。类似Invoke-BatchFile | Out-Null
    【解决方案2】:

    如果你想要 bat 文件的输出,例如构建脚本的结果,然后我发现以下效果最好:

    $Product = 'ProductName' 
    &C:\Path\$Product.bat | Out-File C:\Path\$Product-Output.txt
    

    【讨论】:

      【解决方案3】:

      你只需要几个参数:

      Start-Process -FilePath 'C:\Path\File.bat' -RedirectStandardOutput 'C:\Path\Output.txt' -Wait -WindowStyle Hidden
      

      -RedirectStandardOutput 将输出发送到您的文本文件,-Wait 等待批处理文件完成,-WindowStyle Hidden 隐藏用于批处理文件的窗口。

      【讨论】:

        最近更新 更多