当前位置:  开发笔记 > 编程语言 > 正文

如何在BAT文件的目录中解压缩最新文件?

如何解决《如何在BAT文件的目录中解压缩最新文件?》经验,为你挑选了1个好方法。

我正在构建一个构建系统.构建系统将结果作为zip文件发布到目录中.不幸的是,我没有简单的方法来知道zip文件的名称,因为它是带时间戳的.对于下一个操作,我必须将此zip文件解压缩到某个特定位置,然后再执行一些文件操作.

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

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

编辑:我决定使用ANT中的功能代替此任务.然而,这仍然是一个巧妙的伎俩... ...谢谢你的答案!



1> Dave Webb..:

这应该这样做:

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仅为第一个文件运行.如果解压缩由于某种原因失败,则需要&&(和)和||(或).

您需要更改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"选项.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有