2016-02-29 76 views
0

我想创建一个批处理文件,可以执行以下操作:批处理文件 - 删除文件只有在另外的文件存在

如果“文件1ABC(X)的.bin”存在,那么删除“文件1ABC(Y) .bin“,如果没有,则保留”File 1abc(Y).bin“并继续。

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

这可能吗?

+0

请提供您到目前为止尝试过的任何代码,并且还要向您的问题中添加一些示例数据以进行澄清... – aschipfl

回答

0

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

IF EXIST File1.ext DEL File2.ext 

UPDATE - 要解决这个问题提到的具体问题:

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)是一个数字,因为(9)被认为大于(10),所以它应该用固定的数字位数来指定(例如(009),(010),...)。

+0

这不需要我为每个文件命名吗?如果用手工做它会不会快得多? –

+1

这适用于标题中的问题,但不是实际问题中描述的问题。你将需要一个for/f'循环。 – SomethingDark

+0

这样的事情是如何完成的?这个概念对我来说是新的。 –

相关问题