2014-07-08 3 views
3

ОК эта задача, по-видимому, очень проста в использовании. Однако я провел пару часов без каких-либо результатов.распаковка rar с системой R()

пользователя есть:

  • 7z
  • Окна
  • R

Пользователь должен ввести:

  • путь к 7z (z7path)
  • файла

система должна распаковать RAR в корень проекта

Я попытался:

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

And..nothing происходит. Пожалуйста, не рекомендуется устанавливать PATH, это не помогает, и это должно работать без него.

+2

Что происходит, когда вы выполняете это непосредственно из оболочки Windows? – 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

мне пришлось модифицировать код из второго ответа, и, наконец, он работает. Вы можете изменить «-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) 
Смежные вопросы