MS DOS命令行输出重定向到文件不产生任何输出

时间:2012-07-18 14:20:05

标签: php r dos stdout io-redirection

考虑两种情况a)关闭输出重定向和b)Rscript输出重定向到文件out.txt两种情况下在STDOUT中看到的输出都无法仅在方案b中被重定向到文件out.txt。我在这里遗漏了什么或者这是Rscript.exe特有的吗?

C:\>C:\\WINDOWS\\system32\\shutdown.exe -t:30 > out.txt

C:\>dir out.txt
 Volume in drive C has no label.
 Volume Serial Number is 3568-1B07

 Directory of C:\

07/18/2012  07:43 PM               841 out.txt
               1 File(s)            841 bytes
               0 Dir(s)  17,618,206,720 bytes free

C:\>G:\\Progra~1\\R\\R-2.14.0\\bin\\Rscript.exe --version > out.txt
R scripting front-end version 2.14.0 (2011-10-31)

C:\>dir out.txt
 Volume in drive C has no label.
 Volume Serial Number is 3568-1B07

 Directory of C:\

07/18/2012  07:44 PM                 0 out.txt
               1 File(s)              0 bytes
               0 Dir(s)  17,618,239,488 bytes free

关于为什么Rscript.exe输出没有被重定向到文件out.txt的任何想法或解释?也许是一个非常简单的解释等待。

感谢你,

2 个答案:

答案 0 :(得分:1)

您无法使用重定向来获取版本信息,但您可以将重定向用于实际的R命令。例如,如果您的文件a.r只包含一个命令,例如1+1,那么:

Rscript a.r > out.txt

将显示结果。我认为它与R发送版本信息的“输出”有关。我认为它输出到STDERR而不是STDOUT(或DOS中的等效概念),因此重定向不起作用。

答案 1 :(得分:1)

答案很简单。版本信息写入STDERR(标准错误流),但您只是重定向STDOUT(标准输出)。如果你想要两个都去文件,那么使用

G:\\Progra~1\\R\\R-2.14.0\\bin\\Rscript.exe --version >out.txt 2>&1