我发现一个有用的脚本在参考/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:
头下。