r系统不';尝试7zip时无法工作
嗨,我正在尝试使用R来控制解压缩文件 我在路径中添加了7z,并且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
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。是的,成功了。非常感谢!