在Windows PowerShell中重定向标准输入/输出

22 浏览
0 Comments

在Windows PowerShell中重定向标准输入/输出

在Windows PowerShell中,重定向标准输入/输出所需的语法是什么?\n在Unix中,我们使用:\n

$./program output.txt

\n我该如何在PowerShell中执行同样的任务?

0
0 Comments

在Windows PowerShell中,可以使用以下方法进行标准输出重定向:

  command >  filename      将命令输出重定向到一个文件(覆盖原文件)
  command >> filename      追加到一个文件中
  command 2> filename      重定向错误信息 

标准输入重定向的工作方式与之不同。例如,可以查看此Cmdlet http://technet.microsoft.com/en-us/library/ee176843.aspx

这种问题出现的原因是在Windows PowerShell中,需要对标准输入和输出进行重定向,以便将命令的输出结果保存到文件中,或者从文件中读取输入数据。

解决方法是使用重定向操作符 ">" 或 ">>" 来将命令的输出结果重定向到文件中。">" 操作符将会覆盖原文件内容,而 ">>" 操作符会在原文件内容的末尾追加新的输出内容。

另外,使用 "2>" 操作符可以将错误信息重定向到文件中,以便在需要时进行查看和分析。

通过使用这些重定向操作符,可以方便地将命令的输出结果保存到文件中,或者从文件中读取输入数据,从而提高Windows PowerShell的灵活性和功能性。

0
0 Comments

在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在处理管道时添加新行的问题。

0
0 Comments

在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作为输入,那么这种方法可以工作。否则不行。

0