我正在用Lua 5.1编写一个脚本,用于游戏引擎(EDGE)。
我需要我的脚本将大约20个文件复制到一个。miz文件(这是一个具有固定结构的压缩文件夹),并导航该结构,并从硬盘上的非压缩文件夹复制这些文件。
因为Windows 11是未来,所以我需要使用NanaZip而不是W11不支持的7z。
然而,我发现的所有例子都是使用LUA来压缩文件,而不是将未压缩的文件插入到压缩文件中而不解压缩。
这可能吗?
与@koyaanisqatsi类似,我尝试了7z。您没有评论我们关于为什么应该避免7z的问题,也没有评论是否允许您使用os.execute
,但它应该提供一个很好的起点:
os.execute("7z a yourZip.zip yourFile.png")
其中a
为Add
的标志。
参见手册中的其他标志,如压缩:https://linux.die.net/man/1/7z
Windows 11也有tar
有选项r
和u
D:temp>tar h
tar(bsdtar): manipulate archive files
First option must be a mode specifier:
-c Create -r Add/Replace -t List -u Update -x Extract
Common Options:
-b # Use # 512-byte records per I/O block
-f <filename> Location of archive (default \.tape0)
-v Verbose
-w Interactive
Create: tar -c [options] [<file> | <dir> | @<archive> | -C <dir> ]
<file>, <dir> add these items to archive
-z, -j, -J, --lzma Compress archive with gzip/bzip2/xz/lzma
--format {ustar|pax|cpio|shar} Select archive format
--exclude <pattern> Skip files that match pattern
-C <dir> Change to <dir> before processing remaining files
@<archive> Add entries from <archive> to output
List: tar -t [options] [<patterns>]
<patterns> If specified, list only entries that match
Extract: tar -x [options] [<patterns>]
<patterns> If specified, extract only entries that match
-k Keep (don't overwrite) existing files
-m Don't restore modification times
-O Write entries to stdout, don't restore to disk
-p Restore permissions (including ACLs, owner, file flags)
bsdtar 3.5.2 - libarchive 3.5.2 zlib/1.2.5.f-ipp bz2lib/1.0.6
(上面的cmd.exe是用:os.execute('cmd')
从Lua打开的)
你可以用它提取一个ZIP,但据我所知,不能创建一个。
(tar -xf archive.zip
)
但它是一个问题,你使用TAR而不是ZIP?