You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在无法使用cd的情况下用zip命令压缩时排除父目录?

问题

我写脚本时需要通过Windows控制台调用WSL的zip命令压缩指定文件夹,但用绝对路径执行压缩时,压缩包里会带上完整的路径层级,没法只保留目标文件夹本身。

之前查过多个Stack Exchange站点的方案,大多建议先cd到目标目录再执行zip,但我没法在WSL控制台分步操作,只能在Windows控制台直接跑命令,这种分步操作行不通:

> wsl ~
~$ cd absolute/path/to
absolute/path/to$ zip -r folder.zip folder

我试过用这条命令:

> wsl -e "cd absolute/path/to && zip -r folder.zip folder"

结果报错:

<3>WSL (10963) ERROR: CreateProcessCommon:559: execvpe(cd) failed: No such file or directory

就连> wsl cd absolute/path/to也会报同样的错。

求问:没法用cd或pushd切换目录的情况下,怎么压缩时排除完整的父目录路径?

解决方法

问题根源是wsl -e的用法不对——cd是bash这类Shell的内置命令,不是独立的可执行程序,直接用wsl -e调用它肯定找不到。正确的做法是让WSL启动bash进程,再通过bash -c来执行包含cd和zip的命令串:

基础命令格式

wsl bash -c "cd /absolute/path/to && zip -r folder.zip folder"

处理Windows路径

如果你的目标路径是Windows下的路径,得转换成WSL能识别的格式:把Windows的盘符(比如C:\)改成/mnt/c/,反斜杠换成正斜杠,比如C:\test\target要写成/mnt/c/test/target:

wsl bash -c "cd /mnt/c/test/target && zip -r folder.zip folder"

带空格的路径处理

如果路径里包含空格,要给路径加上引号(注意转义,避免Windows控制台解析错误):

wsl bash -c "cd \"/mnt/c/My Files/target\" && zip -r folder.zip folder"

这样执行后,zip会在目标目录下运行,压缩包里就只会保留folder本身及其子结构,不会带上上层的完整路径层级。


内容的提问来源于stack exchange,提问作者lajawi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 14:17:14