我有一批需要动态名称更改的文件。例如文件名
abc_def_ghi_20180609123211.txt
手头有两项任务
abc_def_ghi.txt
abc_def_ghi_20180609123211.txt
中所示。但将来可能不会。无论如何,时间戳总是在最后一个下划线之后(将来最后一个下划线可能仍然是第3个或者是第4个或第5个等等......)我对批处理文件不太熟悉。我试过了
for /F %%i in ('dir /b *.txt') do echo mv %%i %%i_1
DIR nofile || (PAUSE && EXIT /B 1)
答案 0 :(得分:0)
使用PowerShell一个内核很容易完成,其中包含一个RegEx,匹配基名末尾的14位数字(没有扩展名的名称)
ls *_*_*.txt|? BaseName -match '(_\d{14})$'|REN -NewName {$_.Name -replace $Matches[1]} -Whatif
如果输出看起来没问题,请删除尾随-WhatIf
相同的代码有别名:
Get-ChildItem *_*_*.txt|Where-Object BaseName -match '(_\d{14})$'|
Rename-Item -NewName {$_.Name -replace $Matches[1]} -Whatif