3

ラベルのみに基づいてドライブを参照/選択しますか?で便利なスクリプトを見つけました 。(つまり、ドライブ文字ではありません)cmd.exeウィンドウまたは cygwinで実行して、コンピューターのドライブ文字を見つけることができます。

私が理解できないのは、返された文字列 (例: E:) を R コンソールに表示する方法です。実行すると、結果として system('cscript /nologo DriveFromLabel.vbs label',intern=TRUE)得られます。character(0)

呼び出しでこのコメントの結果cmd.exeを R に表示するためのスイッチはありますか、または呼び出しcygwinて結果を R に返すスクリプトを作成する方法はありますcscriptか?

4

3 に答える 3

2

の代わりに にcscript書き込む可能性があります。次の Bash スクリプトを使用した小さな例 ( ):stderrstdouttest.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でのリダイレクトについては、このリンクを参照してください。この R-help poststderrに対する Brian Ripley の回答にも感謝します。のドキュメントは私の話を確認します: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:ヘッダーの下。

于 2012-12-03T13:36:39.543 に答える
2

私は方法を見つけたと思います: system("C:/cygwin/bin/bash.exe ./doletter.sh",intern=TRUE)doletter含む cscript /nologo DriveFromLabel.vbs label'ドライブ文字が正常に返されます。ここで、目的の「ラベル」文字列をシェル スクリプトにロードするためのいくつかのトリックを実行する必要があります。これは、R 関数を使用してゼロからファイルを
作成することで「簡単に」実行できます。doletter.sh

于 2012-12-03T13:41:57.667 に答える
1

これは私のために働く

 system('Cscript  /nologo your_path/DriveFromLabel.vbs DRIVE_LABEL',intern=TRUE)[1]
于 2012-12-03T13:49:42.870 に答える