在众多文件中获取最新文件,然后重命名最新文件名,并保留前33个字符

问题描述

这正是我拥有的:在一个文件夹中,可以有许多名称相同但日期不同的文件
AAAAAAA.BBB.CCC_DDD.EEEE.20200908 123945
AAAAAAA.BBB.CCC_DDD.EEEE.20200827 14411

我只需要获取最新文件即可将它通过SFTP传输到另一台服务器。
需要重命名最新文件,并删除文件名的最后一部分。我应该只有日期戳,没有时间戳。这意味着只保留前33个字符。理想的结果是:
AAAAAAA.BBB.CCC_DDD.EEEE.20200908

请您帮忙吗?我可以确认1 /。时间戳不同:更长或更短。那不是我的控制。 2 /。文件没有扩展名。文件名看起来与我上面所述的完全一样。

我已经尝试过以下脚本,但是它不起作用:

FOR /F %%I IN ('DIR c:\test\AAAAAAA.BBB.CCC_DDD* /B /O:D') DO SET NEWEST_FILE=%%I  <br/>
echo "Newest Filename = %NEWEST_FILE%"  <br/>
ren "%NEWEST_FILE%" "?????????????????????????????????"

解决方法

@Compo,非常感谢您对我的帮助。多亏了您,它才有效。这就是我所做的:

@Echo Off   
SetLocal EnableExtensions DisableDelayedExpansion 
For /F Delims^=^ EOL^= %%G In ('Dir /B /A:-D "<.<.<.>>>>>>>>>>>>>>>"') Do (
    Set "DateStamp=%%~xG"
    SetLocal EnableDelayedExpansion
    Ren "%%G" "%%~nG!DateStamp:~,9!"
    EndLocal
)
FOR /F %%I IN ('DIR c:\test\AAAAAAA.BBB.CCC_DDD.EEEE* /B /O:D') DO SET NEWEST_FILE=%%I   
echo %NEWEST_FILE%