【问题标题】:Get Newest File Among Many then Rename the Newest File Name Keeping First 33 Characters在众多文件中获取最新文件,然后重命名最新文件名,保留前 33 个字符
【发布时间】:2020-09-09 16:17:57
【问题描述】:

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

我只需要获取最新的文件以将其 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%" "?????????????????????????????????"

【问题讨论】:

标签: timestamp filenames batch-rename


【解决方案1】:

@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%   

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 2022-01-14
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多