Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
r系统不';尝试7zip时无法工作_R_Shell_System - Fatal编程技术网

r系统不';尝试7zip时无法工作

r系统不';尝试7zip时无法工作,r,shell,system,R,Shell,System,嗨,我正在尝试使用R来控制解压缩文件 我在路径中添加了7z,并且 7z e hat.2015-09-26T01-10-02.gz 它成功了 现在在R中,我在同一个目录中,我尝试了 > command1 = paste0('7z e ', drop.file) > command1 [1] "7z e hat.2015-09-26T01-10-02.gz" > system(command1, intern=T) Error in system(command1, intern

嗨,我正在尝试使用R来控制解压缩文件

我在路径中添加了7z,并且

7z e hat.2015-09-26T01-10-02.gz
它成功了

现在在R中,我在同一个目录中,我尝试了

> command1 = paste0('7z e ', drop.file)
> command1
[1] "7z e hat.2015-09-26T01-10-02.gz"
> system(command1, intern=T)
Error in system(command1, intern = T) : '7z' not found
> system2(command1)
Warning message:
running command '"7z e hat.2015-09-26T01-10-02.gz"' had status 127 

> shell(command1)
'7z' is not recognized as an internal or external command,
operable program or batch file.
Warning messages:
1: running command 'C:\Windows\system32\cmd.exe /c 7z e hat.2015-09-26T01-10-02.gz' had status 1 
2: In shell(command1) :
  '7z e hat.2015-09-26T01-10-02.gz' execution failed with error code 1

它有点生,但试试这个(:

仅限Windows。它使用CMD

ZiparEm7zip = function(sQualPasta)
{
  sWDTava = getwd()
  setwd(dirname(sQualPasta))
  sQuem = gsub("[/]", "\\\\", sQualPasta)

  dirname(sQuem)
  NomeArquivo = paste0("eufaco7zip",".bat")
  sNomePasta7zip = basename(sQuem)
  sArquivoSaida = basename(sQuem)
  sQualPasta7zip = sQuem

  if(dir.exists("C:/Program Files/7-Zip/"))
  {
    sTexto = "set PATH=%PATH%;C:\\Program Files\\7-Zip\\"
  }else if(dir.exists("C:/Program Files (x86)/7-Zip/"))
  {
    sTexto = "set PATH=%PATH%;C:\\Program Files (x86)\\7-Zip\\"
  }else
  {
    stop("Error, o 7zip not installed?")
  }


  sTexto2 = paste0("\npushd ",sQualPasta7zip)
  sTexto3 = paste0("\n7z a -r ../",sArquivoSaida," *")
  sTexto4 = '\n( del /q /f "%~f0" >nul 2>&1 & exit /b 0  )'

  cat(sTexto,file=NomeArquivo,append = TRUE)
  cat(sTexto2,file=NomeArquivo,append = TRUE)
  cat(sTexto3,file=NomeArquivo,append = TRUE)
  cat(sTexto4,file=NomeArquivo,append = TRUE)

  shell.exec(NomeArquivo)

  while(file.exists(NomeArquivo))
  {
    Sys.sleep(10)
  }      

  setwd(sWDTava)
  return(TRUE)
}
试试看:

ZiparEm7zip("F:/MYFOLDER")

它有点生,但试试这个(:

仅限Windows。它使用CMD

ZiparEm7zip = function(sQualPasta)
{
  sWDTava = getwd()
  setwd(dirname(sQualPasta))
  sQuem = gsub("[/]", "\\\\", sQualPasta)

  dirname(sQuem)
  NomeArquivo = paste0("eufaco7zip",".bat")
  sNomePasta7zip = basename(sQuem)
  sArquivoSaida = basename(sQuem)
  sQualPasta7zip = sQuem

  if(dir.exists("C:/Program Files/7-Zip/"))
  {
    sTexto = "set PATH=%PATH%;C:\\Program Files\\7-Zip\\"
  }else if(dir.exists("C:/Program Files (x86)/7-Zip/"))
  {
    sTexto = "set PATH=%PATH%;C:\\Program Files (x86)\\7-Zip\\"
  }else
  {
    stop("Error, o 7zip not installed?")
  }


  sTexto2 = paste0("\npushd ",sQualPasta7zip)
  sTexto3 = paste0("\n7z a -r ../",sArquivoSaida," *")
  sTexto4 = '\n( del /q /f "%~f0" >nul 2>&1 & exit /b 0  )'

  cat(sTexto,file=NomeArquivo,append = TRUE)
  cat(sTexto2,file=NomeArquivo,append = TRUE)
  cat(sTexto3,file=NomeArquivo,append = TRUE)
  cat(sTexto4,file=NomeArquivo,append = TRUE)

  shell.exec(NomeArquivo)

  while(file.exists(NomeArquivo))
  {
    Sys.sleep(10)
  }      

  setwd(sWDTava)
  return(TRUE)
}
试试看:

ZiparEm7zip("F:/MYFOLDER")

更新路径后是否重新启动了R?您好,谢谢@wush978我做了
echo%PATH%
,看到路径在那里,它在命令行中工作。哦,有可能R没有得到更新的路径吗?您可以通过
Sys.getenv(“路径”)检查R内部的路径
。如果路径是旧路径,重新启动R应该可以解决您的问题。原因是对路径的修改不会在现有进程中生效。您需要重新启动这些进程才能获得新路径。啊,我明白了。非常感谢。我将尝试此@wush978hi@wush978。是的,它起作用了。非常感谢!您在更新PA后重新启动R了吗TH?你好,谢谢@wush978我做了
echo%PATH%
,看到路径在那里,它在命令行中工作。哦,有可能R没有得到更新的路径吗?你可以通过
Sys.getenv(“路径”)检查R内部的路径
。如果路径是旧路径,重新启动R应该可以解决您的问题。原因是对路径的修改不会在现有进程中生效。您需要重新启动这些进程才能获得新路径。啊,我明白了。非常感谢。我将尝试此@wush978hi@wush978。是的,成功了。非常感谢!