使用 Windows 批处理文件将文件夹中的每四个文件存档到一个 zip 文件

Archiving every four files in a folder to a zip-file with a Windows batch file

我有一个包含 Esri Shapes 的文件夹。每个形状由 4 个单独的文件(.dbf、.prj、.shp、.shx)组成。我希望每个形状都存档在一个单独的 .zip 文件中。此外,我希望此 .zip 文件与其包含的形状具有相同的名称。

例如,如果我有以下文件:

那么我想将这些文件存档如下:

所以我认为这可以通过批处理文件和 FOR 循环来完成。但是,我不太了解编写批处理文件所需的代码语言。我在 Whosebug 的其他地方找到了一些代码,但它 returns 只有生成的 .zip 文件中的 .shp 文件。

例如我得到:

此代码为:

@ECHO ON

SET SourceDir=sourcefolder
SET DestDir=destinationfolder

CD /D "C:\Program Files-Zip"
FOR /F "TOKENS=*" %%F IN ('DIR /B /A-D "%SourceDir%"') DO (
7z.exe a "%DestDir%\%%~NF.zip" "%SourceDir%\%%~NXF"
)
EXIT

有人能告诉我如何调整它以便在单个 .zip 文件中获得每个形状的所有 4 个组件吗?

正如 Stephan 和 aschipfl 评论的那样,代码应如下所示:

@ECHO ON

SET SourceDir=SourceFolder
SET DestDir=DestinationFolder

CD /D "C:\Program Files-Zip"
FOR /F "TOKENS=*" %%F IN ('dir /B /A:-D "%SourceDir%\*.prj"') DO (
    7z.exe a "%DestDir%\%%~NF.zip" "%SourceDir%\%%~NF.*"
)
EXIT

在 FOR-loop 内的 dir-command 处发现了差异。