问题描述
这正是我拥有的:在一个文件夹中,可以有许多名称相同但日期不同的文件:
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%