我想创建一个批处理文件,可以执行以下操作:批处理文件 - 删除文件只有在另外的文件存在
如果“文件1ABC(X)的.bin”存在,那么删除“文件1ABC(Y) .bin“,如果没有,则保留”File 1abc(Y).bin“并继续。
基本上通常有多种版本的文件,其中一种(通过文件名中的单个变量标记,始终保持不变)优于另一种。如果那个高级版本不存在,我希望这个低版本保持不变。
这可能吗?
我想创建一个批处理文件,可以执行以下操作:批处理文件 - 删除文件只有在另外的文件存在
如果“文件1ABC(X)的.bin”存在,那么删除“文件1ABC(Y) .bin“,如果没有,则保留”File 1abc(Y).bin“并继续。
基本上通常有多种版本的文件,其中一种(通过文件名中的单个变量标记,始终保持不变)优于另一种。如果那个高级版本不存在,我希望这个低版本保持不变。
这可能吗?
您可以使用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),...)。
这不需要我为每个文件命名吗?如果用手工做它会不会快得多? –
这适用于标题中的问题,但不是实际问题中描述的问题。你将需要一个for/f'循环。 – SomethingDark
这样的事情是如何完成的?这个概念对我来说是新的。 –
请提供您到目前为止尝试过的任何代码,并且还要向您的问题中添加一些示例数据以进行澄清... – aschipfl