Powershell创建具有不同文件夹属性的ZIP文件

dly7yett  于 2023-11-18  发布在  Shell
关注(0)|答案(1)|浏览(134)

我正在使用PowerShell脚本从文件夹中创建一个zip文件,特别是将一个子文件夹和一个文件放入ZIP存档中。然而,我注意到用7zip打开存档时,该文件夹没有Store方法(D属性),而如果我手动创建ZIP,则会有。
由于ZIP文件是用于Minecraft数据包的,这导致该包无法被游戏识别(除非我像我说的那样手动进行ZIP)。
这是我用的脚本

#Variables
$VERSION = "5.0"
$MC_VERSION = "1.20.2"
$NAME = "snow_on_stairs"
$DATA_PACK_FOLDER = "datapack"
$PACK_EXTENSION = "v"+$VERSION+"-"+$MC_VERSION+".zip"
$DATA_PACK_PATH = ".\"+$NAME+"-"+$DATA_PACK_FOLDER+"-"+$PACK_EXTENSION

#Create data pack
Compress-Archive -Path $(".\"+$DATA_PACK_FOLDER+"\*") -DestinationPath $DATA_PACK_PATH

字符串
文件夹结构如下

RootFolder
 |
 +-- build.ps1
 |    
 +-- datapack
 |  |  
 |  +-- pack.mcmeta
 |  |
 |  +-- data
 |  |
 |  +-- ...


然后从根文件夹运行build.ps1
这是当我用7zip

打开它时生成的归档文件
这是手动创建的档案

正如你所看到的,虽然内容是相同的,但data文件夹的Method不是,当丢失时会导致游戏无法识别包。
我是否需要向Compress-Archive命令提供某些内容以设置此属性?

2wnc66cl

2wnc66cl1#

正如n0rd在评论中所说,使用7zip命令就可以了!
我不得不将Compress-Archive命令更改为
7z a datapack.zip \datapack\* pack.png
所以基本上我必须指定fisrt的存档文件名,然后路径到所有的文件夹和文件,我必须把。
有一件事要提到的是,最初7z命令是无法识别的,我不得不将7zip安装文件夹添加到环境PATH变量中。

相关问题