使用tar.exe添加不同目录文件时报could not chdir错误如何解决
错误产生原因
tar.exe的-C参数的目录切换效果是持续生效的,并非只作用于紧邻的单个文件参数:
- 你执行命令时初始工作目录为
RootFolder - 执行第一个
-C SubDirectory1参数后,tar.exe的当前工作目录已经切换到RootFolder/SubDirectory1 - 后续第二个
-C SubDirectory2\SubDirectory3参数会基于已经切换后的RootFolder/SubDirectory1路径查找子目录,自然找不到对应的路径,因此抛出could not chdir报错。
此外Windows环境下路径使用反斜杠\如果未做转义,也可能偶发路径解析异常。
解决方法
你可以通过两种方式修正命令,同时满足保留相对路径的需求:
方案1:基于已切换目录调整后续路径的相对层级
执行命令时跟随目录切换的状态调整后续-C的路径层级:
tar.exe -cf archive.zip -C SubDirectory1 File1.txt -C ../SubDirectory2/SubDirectory3 File2.txt -C ../../ SubDirectory4
逻辑说明:
- 切换到
SubDirectory1添加File1.txt - 从
SubDirectory1向上跳一级到RootFolder,再进入SubDirectory2/SubDirectory3添加File2.txt - 从
SubDirectory2/SubDirectory3向上跳两级回到RootFolder,添加整个SubDirectory4目录
方案2:每次添加新路径前切回初始工作目录(更易维护)
如果后续还要添加更多路径,推荐每次操作前都切回初始的RootFolder,避免计算层级出错:
tar.exe -cf archive.zip -C SubDirectory1 File1.txt -C ./ SubDirectory2/SubDirectory3/File2.txt -C ./ SubDirectory4
逻辑说明:-C ./表示直接切回执行命令时的初始工作目录RootFolder,后续路径直接基于RootFolder填写即可,不受之前的目录切换影响。
注意事项
Windows版tar.exe完全兼容正斜杠/作为路径分隔符,优先使用正斜杠可以避免反斜杠转义带来的解析问题。
内容的提问来源于stack exchange,提问作者Skulptis
相关产品推荐
相关产品推荐

