使用.bat

时间:2017-08-17 22:02:26

标签: batch-file

我试图创建一个.bat文件,该文件遍历.bat文件所在目录中的每个文件,并将遵循MM_DD_YY*.*命名约定的所有文件重命名为{{ 1}}。

例如,YY_MM_DD*.*将成为05.20.16 MyFile.txt

我设法迭代了文件名,但是我在编写前8个字符的子字符串时遇到了麻烦,并将它们与16.05.20 MyFile.txt的格式进行了比较。

##.##.##

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

本发明提供:

  • 文件名中的日期后面跟着一个空格。

您可以使用分隔符.space将日期元素和剩余文件名分隔为变量%%A - %%D,并按所需顺序重新排列。

为了更好地区分新格式我建议将分隔符(至少暂时)更改为-并将年份扩展为4位数。

@echo off & setlocal EnableDelayedExpression
for /f "tokens=1-3* delims=. " %%A in (
  'dir /b /A-D "??.??.?? *.txt" ^| findstr "^[01][0-9]\.[0-3][0-9]\.[0-9][0-9].*"' 
) do Echo Ren "%%A.%%B.%%C %%D" "20%%C-%%A-%%B %%D"

出于安全原因,批次仅回显它将重命名的内容 如果输出看起来没问题,直到你删除前面的回声。