使用Windows批处理文件重命名文件

时间:2013-06-27 18:47:33

标签: windows for-loop batch-file rename

我有一系列文件需要每天重命名。我收到的文件格式如下:yyyyMMdd_hhmmss_xxx.someFileName.txt我需要删除中间的时间戳以及文件名前面的三位数字段,并保留日期和“someFileName.txt”片段。生成的文件名应如下所示:yyyyMMddsomeFileName.txt

对于蝙蝠文件我很无能为力,我做了一些实验:

@setlocal EnableDelayedExpansion

@for %%i in (.\*.txt) do call rename %%i

:rename
@set dateString=%%i:~0,8%
@set nameString=%%i:~20%
@set combinedString=%dateString%%nameString%
@echo %combinedString%

显然,这实际上并没有重命名。它只是打印combineString输出。我收到语法错误:“命令的语法不正确~0,8~20”

这里发生了什么?对此有什么正确的解决方法?

1 个答案:

答案 0 :(得分:1)

这应该适用于你想要的东西。

@echo off
for /f "delims=" %%X in ('dir /a:-d /b *.txt') do (
    for /f "tokens=1,2,3,* delims=_." %%A in ("%%~nxX") do (
        echo %%A%%D
    )
)

如果要重命名,请将echo命令替换为ren "%%~fX" "%%A%%D"