我正在尝试在 Windows 11 上使用 tar.exe 创建目录的 tarball。当我在 PowerShell 或 cmd 中运行时:
tar -c -f file.tar directory\
我收到错误
tar.exe: OCESSORS=24: Couldn't visit directory: No such file or directory
它无法访问的目录名称在运行之间有所不同,但它似乎总是获取环境变量的某些部分(例如 env.PATH 等),有时目录名称会粘在其末尾。
如果我省略结尾的反斜杠,它似乎可以工作:
tar -c -f file.tar directory
但我想知道问题是什么,特别是因为 PowerShell 自动完成功能将尾部反斜杠添加到目录中。我已经读过尾随反斜杠可能会在 PowerShell 中导致问题,但似乎不适用于这种情况,因为目录名称中没有特殊字符,而且无论如何我不明白它是如何抓取运行时的随机环境变量。
cmd.exe
会话中看到同样的问题):
与 Unix 实现不同,Windowstar
实现,
tar.exe
似乎不允许使用可选的尾随路径分隔符,即使目标是 目录(
\
和 /
都不被接受)。但是,至少对于版本 bsdtar 3.5.2
(根据
tar --version
的报告以及在 Windows 11 22H2 上找到的),这似乎只是一个 外观问题: 尽管出现错误消息,该命令
名称时附加路径分隔符。
解决方案是简单地在完成后手动将其删除。
中(自 PowerShell (Core) 7+ 中已修复),调用 any 外部程序时,尾随
\
会导致参数带有空格出现问题:
请参阅
/ \
排除在外。 输入您的路径/目录/位置,如下所示:
C: SomeFolderX SomeFileinSomeFolderX
.
然后,如果你想要花哨并焦油一些东西-->ziptard
位于位置-->
:..here..:
并且想要将焦油存储在位置-->
:..there..:
;你可以尝试以下方法;tar -cvzf ziptard -C :..here..: -C:..there..:
在压缩 10gb 文件夹时添加了此内容:)
感谢您的意见。