批处理文件 - 仅在存在其他文件时删除文件

时间:2016-02-29 03:12:03

标签: batch-file

我希望创建一个可以执行以下操作的批处理文件:

如果"文件1abc(X).bin"然后删除"文件1abc(Y).bin"如果没有,则保持"文件1abc(Y).bin"并继续前进。

基本上,文件通常有多个版本,其中一种(由文件名中的单个变量标记,始终保持不变)优于另一种。如果不存在高级版本,我希望保留劣质版本。

这可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用IF语句(http://www.computerhope.com/if.htm):

IF EXIST File1.ext DEL File2.ext

更新 - 解决问题中提到的具体问题:

set FileNames="File 1abc (*).bin"
set LastVersion=""
:: Find last version
for %%f in (%FileNames%) do (
    if "%%f" GTR %LastVersion% SET LastVersion="%%f"
)
:: Delete old versions
for %%f in (%FileNames%) do (
    if "%%f" LSS %LastVersion% DEL "%%f"
)

有一个问题:如果版本(示例中为X或Y)是一个数字,则应使用固定的位数(例如(009),(010),......)指定,因为( 9)被认为大于(10)。