【问题标题】:unpacking rar with R system()用 R system() 解压 rar
【发布时间】:2014-08-29 05:22:35
【问题描述】:

好吧,这个任务似乎真的很容易做到。但是我花了几个小时没有任何结果。

用户有:

  • 7z
  • 窗户
  • R

用户应输入:

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

系统应该解压rar到项目的根目录

我试过了:

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

然后..什么也没发生。 请不要建议设置 PATH,它没有帮助,没有它应该可以工作。

【问题讨论】:

  • 当您直接从 Windows shell 执行此操作时会发生什么?
  • 请注意,这可能意味着文件将被提取到 R 会话的工作目录中(请参阅getwd),这是您期望的目录吗?如果您想要另一个输出目录,请使用setwd 设置您的工作目录,或将不同的输出位置传递给您的system 调用。此外,7z 通常会要求确认是否覆盖文件,请参阅-y 以了解解决此问题的方法。
  • 感谢 cmets,我发现了两件奇怪的事情:1. 通过 file.download 下载的文件正在以某种方式损坏 2. 我需要指定 -o 输出文件夹
  • 首先尝试使代码在.bat 文件中工作。以确保它有效。但我认为最终它会看起来像cmd = paste("C:\\Program Files (x86)\\7-Zip\\7z e D:/20140601.rar ",getwd(), sep=" ")
  • 文件下载问题是一个单独的问题。请阅读您用于下载 .rar 文件的任何工具的帮助/手册,如果您还没有解决,请发布单独的问题。

标签: regex r shell system rar


【解决方案1】:

好的,我终于明白了。

  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)
    

【讨论】:

    【解决方案2】:

    我不得不修改第二个答案的代码,最后它工作了。 如果您想要所有文件,您可以将“-ir!. -o”更改为“-y -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)
    

    【讨论】:

      猜你喜欢
      • 2015-05-05
      • 2010-10-07
      • 1970-01-01
      • 2021-04-23
      • 2011-03-21
      • 2020-09-18
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      相关资源
      最近更新 更多