我正在使用带有搜索掩码/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%"
答案 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"
之类的名称工作正常 - 引号被删除,但它们可以防止空格和特殊字符。