6

system在 Win 7 机器上尝试传递以下字符串。它应该.git在 repo 中创建目录,但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粘贴到命令行一样?一个很好的答案,但我想知道这里发生了什么,所以我可以在未来通过使用system.

4

2 回答 2

5

在 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/
于 2013-09-05T12:41:32.997 回答
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 上运行;)

于 2013-09-04T02:39:04.150 回答