如何用WinRAR CLI打包文件仅保留指定目录结构而非完整路径
解决WinRAR CLI打包保留指定目录结构的问题
核心解决思路
利用WinRAR的-epx参数精准剔除绝对路径中不需要的前缀部分,仅保留从as_qwe___031425_Simon开始的目标目录结构。
修改后的Python命令
在原命令中添加-epx参数,指定所有文件的共同父路径前缀(即需要移除的冗余路径部分):
prefix_to_remove = r"C:\Users\Simon\Desktop\vdb\" command = f'"{winrar_path}" a -r -v10m -epx"{prefix_to_remove}" "{dest_file}" @"{files_to_export_path}"'
参数说明
-epx<前缀字符串>:WinRAR会自动识别每个文件绝对路径中匹配该前缀的部分并移除,最终仅保留前缀之后的目录与文件名结构,完全符合你需要保留as_qwe___031425_Simon及其子目录的要求。
预期效果
执行修改后的命令后,压缩文件内的目录结构将变为:
as_qwe___031425_Simon/ ├─ vdb.blend └─ VDB/ └─ embergen_fire_a_0/ └─ embergen_fire_a_93.vdb
备选方案(切换工作目录)
如果-epx参数无法适配你的环境,可先切换到共同父目录再执行命令:
import os common_parent_dir = r"C:\Users\Simon\Desktop\vdb\" # 切换到目标父目录 os.chdir(common_parent_dir) # 将文件列表中的绝对路径转为相对路径后,执行以下命令 command = f'"{winrar_path}" a -r -v10m -ep1 "{dest_file}" @"{files_to_export_path_relative}"'
这里-ep1参数会排除当前工作目录(即vdb),直接保留其下的子目录结构。
内容的提问来源于stack exchange,提问作者Simón Sánchez
相关产品推荐
相关产品推荐

