使用带窗口的系统

时间:2013-09-04 01:23:34

标签: r

我有以下字符串我试图在Win 7机器上传递给system。它应该在repo中创建.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的位置。

当我跑步时,上面没有任何反应。没有消息,nadda。但是我是否在字符串上运行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使其像我{{1}一样运行并粘贴到命令行?答案很好,但我想知道这里发生了什么,所以我可以通过cat访问Windows命令行来解决类似情况。

2 个答案:

答案 0 :(得分:4)

在Windows上使用shell。这对我来说很好......

shell( "cd C:/Data/foo2 && \"C:\\Program Files (x86)\\Git\\bin\\git.exe\" init" )
#CMD.EXE was started with the above path as the current directory.
#UNC paths are not supported.  Defaulting to Windows directory.
#Initialized empty Git repository in C:/Data/foo2/.git/

答案 1 :(得分:3)

尝试一下 - 至少对我来说使用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上运行;)