【问题标题】:Archiving every four files in a folder to a zip-file with a Windows batch file使用 Windows 批处理文件将文件夹中的每四个文件归档到一个 zip 文件
【发布时间】:2018-04-05 10:01:09
【问题描述】:

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

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

  • Test1.dbf
  • Test1.prj
  • Test1.shp
  • Test1.shx
  • Test2.dbf
  • Test2.prj
  • Test2.shp
  • Test2.shx

然后我希望将这些文件归档如下:

  • Test1.zip:

    • Test1.dbf
    • Test1.prj
    • Test1.shp
    • Test1.shx
  • Test2.zip:

    • Test2.dbf
    • Test2.prj
    • Test2.shp
    • Test2.shx

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

例如我得到:

  • Test1.zip:

    • Test1.shp
  • Test2.zip:

    • Test2.shp

这段代码是:

@ECHO ON

SET SourceDir=sourcefolder
SET DestDir=destinationfolder

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

有人能告诉我如何调整它,以便将每个形状的所有 4 个组件都放在一个 .zip 文件中吗?

【问题讨论】:

  • 你想要%%~NF.*而不是%%~NXF
  • 不错!效果很好,谢谢!
  • 如果我做对了,再加上@Stephan 的建议,先创建每个存档,然后再重新打开 3 次;因此我会将dir 命令更改为dir /B /A:-D "%SourceDir%\*.prj",因此不再重新打开存档...
  • 谢谢@aschipfl!这又为我节省了一些时间。

标签: file batch-file for-loop zip shape


【解决方案1】:

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

@ECHO ON

SET SourceDir=SourceFolder
SET DestDir=DestinationFolder

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

区别在于 FOR 循环中的 dir 命令。

【讨论】:

    猜你喜欢
    • 2018-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 2010-11-02
    • 2020-08-08
    • 2014-03-21
    相关资源
    最近更新 更多