使用搜索掩码在BATCH中使用FORFILES重命名文件时出现重复错误

时间:2015-07-18 22:23:04

标签: windows batch-file

我正在使用带有搜索掩码/M *.log.*的FORFILES运行批处理脚本,例如:

a.log.1
a.log.2
a.log.3

我想通过附加当前日期重命名它们并将它们移动到目标文件夹。但我得到一个错误说明:

  

重复文件名

仅将文件a.log.1移至目的地并重命名。

这是我的代码:

for /f "delims=" %%G in ( 'forfiles /s /c "cmd /c echo @path" /d -7 / m *.log.*' ) do ren "%%~G" "%%~nG-%Ret%"

1 个答案:

答案 0 :(得分:0)

区分这三个文件的唯一方法是扩展程序(.1.2.3)。但是您的目标名称仅使用基本名称,没有扩展名,因此您当然会获得重复的名称。您可以使用"%%~nxG-%Ret%"更改目标名称以包含扩展名。 (我假设您已在其他地方定义Ret。)

但我认为你的FOR循环没有任何需要 - FORFILES可以直接进行重命名:

forfiles /s /d -7 /m *.log.* /c "cmd /c ren @path @file0x22-%Ret%0x22"

我不知道%Ret%中的日期格式是什么样的,所以为了安全起见,我在其周围加上了引号(0x22)。它看起来很奇怪,但像"name.ext""date"之类的名称工作正常 - 引号被删除,但它们可以防止空格和特殊字符。