我正在建立的系统。在建立系统职位的结果作为一个压缩文件的目录中。不幸的是我没有简单的方法来知道名字的拉链文件,因为它是加时间戳。下运作,我必须解这个压缩文件的一些具体的位置,然后做一些更多的文件的行动。

我想我可以改变所建立的系统所以我指定名称的结果拉链文件从命令行,但是,我虽然它可能是最简单的只是为了找出哪一个是最新文件,并将它(如果前一过程是成功)。

我怎么能问题的一个压缩的命令,才会影响的最新邮编文件的目录,忽视所有其他人吗?

编辑:我决定使用能力在蚂蚁,用于这项任务,而不是。然而,它仍然是一个整洁的骗有了sleve...谢谢你的回答!

有帮助吗?

解决方案

这应该这样做:

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

这一工作如下:

  • DIR /B /O-D *.ZIP 列出了所有拉链的文件中反日期顺序在一个"裸"-即名字只有格式。
  • FOR /F usebackq 用来循环出的命令。
  • && GOTO DONE || GOTO DONE 使得肯定的 UNZIP 只是运行为的第一个文件。你需要这两个 && (和)和 || (或)的情况下解失败,因为某些原因。

你会需要改变 UNZIP %%i 无论出于何解命令你想要使用。

编辑 上述将工作,只要的邮政编文件不包含任何空间。如果你要处理的文件名与空间,使用以下形式:

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

差异是:

  • 在"令牌=*"选择返回的整体的文件,即使它包含了空间。

  • 文件通过压缩解压的报价

  • 这个变种用途单一的报价为DIR命令因此不需要"usebackq"选项。

其他提示

如果Cygwin或其他类Unix环境是替代

unzip "$(ls -tr *zip | tail -n1)"

会这样做

我认为您需要7-zip才能编写压缩/解压缩脚本。

为什么在使用PowerShell或控制台应用程序时使用bat文件?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top