我有以下字符串我试图在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命令行来解决类似情况。
答案 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上运行;)