Tar.exe 无法添加来自不同文件夹的 2 个文件

Tar.exe can't add 2 files from different folders

我正在尝试使用 tar.exe 将 2 个不同的文件添加到 zip 存档中。 文件夹结构如下:

我想使用相对路径将 File1、File2 和 SubDirectory4 的所有文件添加到存档中。

我正在使用的命令是当前目录是 RootFolder:
tar.exe -cf archive.zip -C SubDirectory1 File1.txt -C SubDirectory2\SubDirectory3 File2.txt SubDirectory4

执行后出现如下错误:tar.exe: could not chdir to 'SubDirectory2\SubDirectory3'
我找不到类似的问题,或者 -C 标志的文档也不足以让我理解这个问题。 有谁知道为什么它不起作用?

当你 cd 进入 SubDirectory1 时,它成为命令中的当前目录,所以为了 cd 进入 SubDirectory3\Subdirectory4 你需要使那个相对to SubDirectory1 不是原来的目录。然后当你 cd 变成 SubDirectory4 时,那需要相对于 SubDirectory3.

考虑到上述情况,并使用 RootFolder 作为您的当前目录,试试这个:

%SystemRoot%\System32\tar.exe -cf "archive.zip" -C ".\SubDirectory1" "File1.txt" -C "..\SubDirectory2\SubDirectory3" "File2.txt" -C "..\..\SubDirectory4" "File3.txt" "File4.txt"

如果您想要 SubDirectory4 的全部内容,请相应地更改最后一个 glob:

%SystemRoot%\System32\tar.exe -cf "archive.zip" -C ".\SubDirectory1" "File1.txt" -C "..\SubDirectory2\SubDirectory3" "File2.txt" -C "..\..\SubDirectory4" "*"

我在这里使用双引号作为最佳做法,尽管对于您使用的提供的文件和目录名称,如果愿意,可以省略它们。我还使用了 tar.exe 的默认 Windows 10 版本的完整路径和扩展名,如果您不关心健壮的代码,并且希望赌 %Path% 和 [=24] =] 变量没有被损坏,然后随意将 %SystemRoot%\System32\tar.exe 更改为 tar

Compo 已正确显示 -C 如何在没有文件夹的情况下相对于 Arc 进行导航以进行存储,因此 他是正确答案到最初提出的问题

>tar -tf archive.zip

File1.txt
File2.txt
File3.txt
File4.txt

但是对于那些正在寻找如何相对于根 Arc 存储文件的人

使用此方法或变体 记得对空格使用“双引号”,或者对“路径name/file名称”

注意 tar 文件不是 Zip,因此 默认情况下 不应使用该扩展名。 我正在纠正自己,因为 tar 可以构建一个有效的 zip 文件。稍后见

始终以完整的方式命名存档我使用 root 来显示谱系和 .tar 来指示如何提取它。

tar -f root.tar -c SubDirectory1\File1.txt SubDirectory2\SubDirectory3\File2.txt SubDirectory4\*.*

稍后提取子文件夹及其内容将相对于根目录

>tar -tf root.tar

SubDirectory1/File1.txt
SubDirectory2/SubDirectory3/File2.txt
SubDirectory4/File3.txt
SubDirectory4/File4.txt

Post 脚本

了解一下可能会很有趣,Tar 可以构建一个 valid.zip 并可以列出和提取它们。 (注意报告内容的不同)

>tar -tf root.zip

SubDirectory1/File1.txt
SubDirectory2/SubDirectory3/
SubDirectory2/SubDirectory3/File2.txt
SubDirectory4/File3.txt
SubDirectory4/File4.txt

我们可以简单地提取这些子文件夹(并且没有可见的反馈

errorlevel 0 All files were processed successfully.
errorlevel 1 An error occurred.

使用 >tar -xf root.zip

要构建 zip 文件,我们需要添加 -auto 开关

tar -a -f root.zip -c SubDirectory1\File1.txt SubDirectory2\SubDirectory3\File2.txt SubDirectory4\*.*