2014-07-08 52 views
3

确定这个任务似乎很容易做到。但是,我花了几个小时没有任何结果。解压R系统()

用户有:

  • 7Z
  • 的Windows
  • [R

用户需要输入:

  • 路径7Z(z7path)
  • 文件名

系统应解压RAR到项目的根

我想:

cmd = "C:\\Program Files (x86)\\7-Zip\\7z e D:/20140601.rar" 
system(shQuote(cmd)) 

And..nothing发生。 请不要建议设置PATH,它没有帮助,并且这应该没有它。

+2

当您直接从Windows shell执行此操作时会发生什么? – Andrie

+1

请注意,这可能意味着该文件将在R会话的工作目录中提取(请参阅'getwd'),这是您期望的目录吗?如果你想要另一个输出目录,使用'setwd'设置你的工作目录,或者将一个不同的输出位置传递给你的'系统'调用。另外,7z通常会要求确认覆盖文件,请参阅'-y'来找到解决方法。 –

+0

thx的评论,我发现了两件好奇的事情: 1.通过file.download下载的文件变得损坏 2.我需要指定-o输出文件夹 – alexsalo

回答

3

好吧,我终于明白了。

  1. 用途外壳
  2. 使用shQuote对周边道路
  3. 使用权键

    z7path = shQuote('C:\\Program Files (x86)\\7-Zip\\7z') 
    file = paste(getwd(), '/101-01.rar', sep = '') 
    cmd = paste(z7path, ' e ', file, ' -y -o', getwd(), '/', sep='') 
    shell(cmd) 
    
1

我不得不修改从第二个答案的代码,最后它的工作原理。 如果您想要所有文件,您可以通过“-y -o”更改“-ir! -o”。

z7path = shQuote('C:\\Program Files\\7-Zip\\7z') 
file = paste('"', 'D:/20140601.rar', '"',sep = '') 
cmd = paste(z7path, ' e ', file, ' -ir!*.* -o', '"', getwd(), '"', sep='') 

system(cmd)