6

systemWin 7 マシンに渡そうとしている次の文字列があります。.gitリポジトリにディレクトリを作成する必要がありますが、それを使用systemすることはできません (Linux ボックスでも同様のアプローチが機能するため、これは Windows 固有の問題です)。

system( "cd C:/Users/trinker/Desktop/foo2 && \"C:\\Program Files (x86)\\Git\\bin\\git.exe\" init" )

C:/Users/trinker/Desktop/foo2レポの場所です。C:\\Program Files (x86)\\Git\\bin\\git.exe私のシステム上のgitの場所です。

上記を実行しても何も起こりません。メッセージはありません、ナッダ。しかしcat、文字列で実行し、実行するコマンドラインに直接貼り付けて、次のメッセージを表示.gitし、適切な場所に作成します。

だから走って...

cat("cd C:/Users/trinker/Desktop/foo2 && \"C:\\Program Files (x86)\\Git\\bin\\git.exe\" init")

これをコマンドラインに貼り付けます...

cd C:/Users/trinker/Desktop/foo2 && "C:\Program Files (x86)\Git\bin\git.exe" init

与える...

Initialized empty Git repository in C:/Users/trinker/Desktop/foo2/.git/

...どっちがいい

したがって、R の外部で同じ文字列を使用して実行できますが、R 内では実行できません。コマンド ラインに貼り付けたsystemかのように実行するために使用する最初の文字列に何をする必要がありますか? cat答えは素晴らしいですが、ここで何が起こっているのか知りたいので、将来、Windowsコマンドラインにsystem.

4

2 に答える 2

3

これを試してみてください-少なくとも私にとっては、giveを使用してsystem("cd blah blah && blah blah", intern = TRUE)いるError in system(cmd, intern = T) : 'cd' not foundため、cdを使用することはできません-幸いなことに、作業ディレクトリが使用されるため、システムコールではなくRで作業ディレクトリを変更できます。

wd <- getwd()
setwd("C:/Users/trinker/Desktop/foo2")
cmd <- '"C:/Program Files (x86)/Git/bin/git.exe" init'
system(cmd, intern = T)
setwd(wd)

intern パラメータは必須ではありませんが、デバッグに役立ちます。

通常は Linux で実行していることに感謝しています ;)

于 2013-09-04T02:39:04.150 に答える