如何将vbs脚本的输出返回到R控制台?

我发现一个有用的脚本在参考/select一个驱动器只基于它的标签? (即不是驱动器号) ,可以在cmd.exe窗口或cygwin下运行,以在我的电脑上查找驱动器号。

我无法弄清楚如何让返回的string(例如E:显示在我的R控制台中。 如果我运行system('cscript /nologo DriveFromLabel.vbs label',intern=TRUE)我得到character(0)作为结果。

是否有一些开关,使这个注释的结果在一个cmd.exe调用R可见,或者有一些方法来创build一个脚本,调用cygwin并将cscript结果返回给R?

这对我有用

  system('Cscript /nologo your_path/DriveFromLabel.vbs DRIVE_LABEL',intern=TRUE)[1] 

我想我找到了一个方法: system("C:/cygwin/bin/bash.exe ./doletter.sh",intern=TRUE) ,其中doletter包含cscript /nologo DriveFromLabel.vbs label'成功返回驱动器号。
现在我只需要做一些技巧来将所需的“标签”字符串加载到shell脚本中,通过R函数从头开始创建doletter.sh文件就可以“轻松”完成。

这可能是cscript写入stderr而不是stdout 。 使用下面的Bash脚本( test.sh )的一个小例子:

 echo spam 1>&2 

也没有得到捕获的结果:

 > spam = system("./test.sh", intern = TRUE) spam > spam character(0) 

Linux下的解决方案现在将stderr重定向到stdout

 > spam = system("./test.sh 2>&1", intern = TRUE) > spam [1] "spam" 

你可以看看这个链接重定向在Windows下的stderr 。 也感谢Brian Ripley对这个R帮助文章的回答。 system的文件证实了我的故事:

 For command-line R, error messages written to 'stderr' will be sent to the terminal unless 'ignore.stderr = TRUE'. They can be captured (in the most likely shells) by system("some command 2>&1", intern=TRUE) 

Stdout and stderr:头下。