当我运行这个
zip('C:\\path\\to\\dir\\out'
, files = paste0('C:\\path\\to\\dir\\', c('one.xlsx', 'two.xlsx')))
它会压缩文件,但解压缩后会得到一个包含“ path”文件夹的文件夹,该文件夹包含“ to”文件夹等(完整目录路径)。因此,解压缩后,文件现在位于C:\\path\\to\\dir\\out\\path\\to\\dir\\
中。
我如何压缩文件而没有生成的zip文件包含所有父目录?
我正在使用Windows 10
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 4.2
year 2017
month 09
day 28
svn rev 73368
language R
version.string R version 3.4.2 (2017-09-28)
nickname Short Summer
答案 0 :(得分:2)
根据documentation,R zip函数使用R_ZIPCMD
中设置的etc/Rcmd_environ
。默认情况下,此选项设置为命令行zip
Windows实用程序。 R函数提供输入参数 flags ,以将其他输入参数传递给基础命令行zip函数。说明手册
可以下载here标志。
-j
标志仅允许存储文件名,而不是完整文件路径。
f_path <- 'C:\\path\\to\\dir\\out'
zip(f_path,
files = paste0(f_path, c('one.xlsx', 'two.xlsx')),
flags = '-r9Xj')
标志输入的-r9X
部分是传递给基础实用程序功能的默认参数,并指定zip命令应递归搜索子目录,使用最大压缩率并删除折旧的文件字段。
仅使用Windows zip实用程序进行了测试。使用unix实用程序时,必要的标志可能有所不同。