在Windows PowerShell中重定向标准输入/输出
在Windows PowerShell中,可以使用以下方法进行标准输出重定向:
command > filename 将命令输出重定向到一个文件(覆盖原文件) command >> filename 追加到一个文件中 command 2> filename 重定向错误信息
标准输入重定向的工作方式与之不同。例如,可以查看此Cmdlet http://technet.microsoft.com/en-us/library/ee176843.aspx。
这种问题出现的原因是在Windows PowerShell中,需要对标准输入和输出进行重定向,以便将命令的输出结果保存到文件中,或者从文件中读取输入数据。
解决方法是使用重定向操作符 ">" 或 ">>" 来将命令的输出结果重定向到文件中。">" 操作符将会覆盖原文件内容,而 ">>" 操作符会在原文件内容的末尾追加新的输出内容。
另外,使用 "2>" 操作符可以将错误信息重定向到文件中,以便在需要时进行查看和分析。
通过使用这些重定向操作符,可以方便地将命令的输出结果保存到文件中,或者从文件中读取输入数据,从而提高Windows PowerShell的灵活性和功能性。
在Windows PowerShell中重定向标准输入/输出的原因是,当使用PowerShell的Get-Content命令处理大文件时,需要一种替代方法。解决方法是使用CMD命令或PowerShell命令来重定向输入和输出。
首先,可以使用CMD命令在PowerShell中重定向输入,示例代码如下:
cmd.exe /c ".\program < .\input.txt"
其次,可以使用PowerShell命令重定向输入和输出,并将结果写入变量。示例代码如下:
Start-Process .\program.exe -RedirectStandardInput .\input.txt -NoNewWindow -Wait $Result = Get-Content ".\temp.txt"
这样做可以在同一个窗口中同步运行程序,并将输出结果保存到变量中。另外,如果想要将输出结果保存到文件中,可以使用-RedirectStandardOutput选项来重定向输出,并通过Get-Content命令从文件中读取结果。
感谢以上的解决方法提供者,这些方法使得我们能够在PowerShell中重定向输入输出,并解决了PowerShell在处理管道时添加新行的问题。
在Windows PowerShell中,存在一个问题,即无法直接将文件连接到标准输入(stdin)。然而,仍然可以访问stdin。解决方法是使用管道将文件内容传递给程序,并将输出重定向到文件。
Get-Content input.txt | ./program > output.txt
这将整个input.txt文件读入内存。如果input.txt可能很大,请小心。
有人问是否与cat命令有区别?
这里提到的cat是PowerShell中Get-Content的别名,它们是完全相同的东西。
Connor指出,Get-Content将读取的每一行逐一通过管道发送。
有趣的是,在PowerShell 6中,"<"运算符被报告为“保留以供将来使用”。
自PowerShell v1以来一直是这样。
这种方法看起来非常笨拙...如果"<"运算符当前未使用,为什么不将其用于大多数人期望的功能呢?
如果命令需要从stdin接收输入,则此方法将起作用。否则无效。
另外,如果命令要求输入密码,是否可以将密码重定向给它?
如果命令接受stdin作为输入,那么这种方法可以工作。否则不行。