如何在不使用存档名称(7zip,命令行)创建子文件夹的情况下将存档直接解压缩到目标文件夹中?
How to unzip archive directly into target folder without creating a subfolder with the archive name (7zip, command line)?
我正在使用 7zip 命令行界面提取档案,如下所示:
7za.exe x -y {path_to_zipfile} -o{path_to_target_folder}
如果我的 zip 文件名为 my_archive.7z
,那么我在目标文件夹中得到以下文件结构:
target_folder
└─ my_archive
├─ foo.png
├─ bar
│ ├─ baz.txt
│ └─ qux.txt
...
但是,我不想要子文件夹 my_archive
。我正在寻找适用于 7zip 命令的标志,以便所有内容都直接提取到目标文件夹中,而无需创建 my_archive
子文件夹。
注释
我不能用 e
替换 x
因为文件结构不应该丢失(e
标志将所有文件推送到顶层)。
我正在 Windows 10 计算机上工作,但解决方案也必须在 Linux.
上工作
我使用的是以下版本:7-Zip (a) 19.00 (x64)
一些背景信息:我从 Python 程序调用 7zip,如下所示:
# Variables:
# 'sevenzip_abspath': absolute path to 7za executable
# 'zipfile_abspath': absolute path to zipped file (`.7z` format)
# 'targetdir_abspath': absolute path to target directory
commandlist = [
sevenzip_abspath,
'x',
'-y',
zipfile_abspath,
f'-o{targetdir_abspath}',
]
output = subprocess.Popen(
commandlist,
stdout=subprocess.PIPE,
shell=False,
).communicate()[0]
if output is not None:
print(output.decode('utf-8'))
我知道解压缩完成后我可以在 Python 中做各种事情(move/rename 目录等),但那是计划 B。首先我想检查是否有是一个优雅的解决方案。
我想坚持使用 7zip,原因可能会让我们走得太远。
您可以在解压存档之前重命名顶级文件夹以匹配目标文件夹。
7za rn {path_to_zipfile} my_archive target_folder
这将永久更改存档。如果您不想要,请先复印一份。
我正在使用 7zip 命令行界面提取档案,如下所示:
7za.exe x -y {path_to_zipfile} -o{path_to_target_folder}
如果我的 zip 文件名为 my_archive.7z
,那么我在目标文件夹中得到以下文件结构:
target_folder
└─ my_archive
├─ foo.png
├─ bar
│ ├─ baz.txt
│ └─ qux.txt
...
但是,我不想要子文件夹 my_archive
。我正在寻找适用于 7zip 命令的标志,以便所有内容都直接提取到目标文件夹中,而无需创建 my_archive
子文件夹。
注释
我不能用
e
替换x
因为文件结构不应该丢失(e
标志将所有文件推送到顶层)。我正在 Windows 10 计算机上工作,但解决方案也必须在 Linux.
上工作我使用的是以下版本:
7-Zip (a) 19.00 (x64)
一些背景信息:我从 Python 程序调用 7zip,如下所示:
# Variables: # 'sevenzip_abspath': absolute path to 7za executable # 'zipfile_abspath': absolute path to zipped file (`.7z` format) # 'targetdir_abspath': absolute path to target directory commandlist = [ sevenzip_abspath, 'x', '-y', zipfile_abspath, f'-o{targetdir_abspath}', ] output = subprocess.Popen( commandlist, stdout=subprocess.PIPE, shell=False, ).communicate()[0] if output is not None: print(output.decode('utf-8'))
我知道解压缩完成后我可以在 Python 中做各种事情(move/rename 目录等),但那是计划 B。首先我想检查是否有是一个优雅的解决方案。
我想坚持使用 7zip,原因可能会让我们走得太远。
您可以在解压存档之前重命名顶级文件夹以匹配目标文件夹。
7za rn {path_to_zipfile} my_archive target_folder
这将永久更改存档。如果您不想要,请先复印一份。