gpt4 book ai didi

build-process - 如何解压缩 BAT 文件目录中的最新文件?

转载 作者:行者123 更新时间:2023-12-01 08:43:00 24 4
gpt4 key购买 nike

我正在开发一个构建系统。构建系统将结果以 zip 文件的形式发布到目录中。不幸的是,我没有简单的方法知道 zip 文件的名称,因为它带有时间戳。接下来的操作,我必须把这个 zip 文件解压到某个特定的位置,然后再做一些文件操作。

我想我可以更改构建系统,因此我从命令行指定结果 zip 文件的名称,但是,我认为找出哪个是最新文件并解压缩它可能是最简单的(如果前一个过程是成功的)。

如何发出仅对目录中最新的 zip 文件生效而忽略所有其他文件的解压缩命令?

编辑:我决定改用 ANT 中的功能来完成这项任务。但是,这仍然是一个巧妙的技巧......感谢您的回答!

最佳答案

应该这样做:

FOR /F usebackq %%i IN (`DIR /B /O-D *.ZIP`) DO UNZIP %%i && GOTO DONE || GOTO DONE
:DONE

它的工作原理如下:

  • DIR/B/O-D *.ZIP 以“裸”(即仅名称)格式以相反的日期顺序列出所有 ZIP 文件。
  • FOR/F usebackq 用于循环遍历命令的输出。
  • && GOTO DONE || GOTO DONE 确保 UNZIP 仅针对第一个文件运行。您需要 && (and) 和 || (or) 以防由于某种原因解压缩失败。

您需要将 UNZIP %%i 更改为您想要使用的任何解压缩命令。

编辑只要 Zip 文件名不包含任何空格,上述内容就可以工作。如果要处理带空格的文件名,请使用以下变体:

FOR /F "tokens=*" %%i IN ('DIR /B /O-D *.ZIP') DO UNZIP "%%i" && GOTO DONE || GOTO DONE
:DONE

区别在于:

  • “tokens=*”选项返回整个文件名,即使它包含空格。

  • 传递给 UNZIP 的文件名被引用

  • 此变体对 DIR 命令使用单引号,因此不需要“usebackq”选项。

关于build-process - 如何解压缩 BAT 文件目录中的最新文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/178936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com