Tar.exe 无法添加来自不同文件夹的 2 个文件
Tar.exe can't add 2 files from different folders
我正在尝试使用 tar.exe 将 2 个不同的文件添加到 zip 存档中。
文件夹结构如下:
- 根文件夹
- 子目录 1
- File1.txt
- 子目录 2
- 子目录 3
- File2.txt
- 子目录4
- File3.txt
- File4.txt
我想使用相对路径将 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\*.*
我正在尝试使用 tar.exe 将 2 个不同的文件添加到 zip 存档中。 文件夹结构如下:
- 根文件夹
- 子目录 1
- File1.txt
- 子目录 2
- 子目录 3
- File2.txt
- 子目录 3
- 子目录4
- File3.txt
- File4.txt
- 子目录 1
我想使用相对路径将 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\*.*