Windows FOR语句解析文件名中的日期时间戳

Windows FOR语句解析文件名中的日期时间戳,windows,batch-file,for-loop,cmd,Windows,Batch File,For Loop,Cmd,我将如何在FOR语句中完成以下内容 我在windows PC目录中有一些文件,我想通过文件名中的全部或部分日期戳来识别这些文件,即- CLIENT CODE / ID DATETIME STAMP 0000090000010009.CLIENTNAME.20121212140022.txt 0001090000010009.CLIENTNAME.20130916110025.txt 0001090000010009.CLIENTNAME.20130908150022.tx

我将如何在FOR语句中完成以下内容

我在windows PC目录中有一些文件,我想通过文件名中的全部或部分日期戳来识别这些文件,即-

CLIENT CODE / ID            DATETIME STAMP 
0000090000010009.CLIENTNAME.20121212140022.txt
0001090000010009.CLIENTNAME.20130916110025.txt
0001090000010009.CLIENTNAME.20130908150022.txt

我不必打开/读取文件。我只需要识别特定日期时间范围内的文件以移动、删除或复制它们。

您可以使用带有通配符的
dir
命令。因此,假设您想要文件
000009000010009.CLIENTNAME.201212140022.txt
,您可以执行以下操作:

dir*201212140022*

如果要将其放入循环中,则/F的
for
将执行以下操作:


对于/F%x in('dir*201212140022*/b/a-d')执行del%x

您需要向我们展示您的尝试,然后我们可以提供帮助。我收到以下消息:“in此时出乎意料。”@E.Clay抱歉,丑陋的错误:忘记了for循环变量声明
%a
。这似乎有效,但在批处理文件中使用时,我得到了“这个时候出乎意料”的答案。我做错了什么?。对于/F%%x in('dir%1/b/a-d'),请执行echo%%x谢谢,我现在可以走了。
for /f "tokens=1-4delims=." %%a in ('dir /b /a-d "*.clientname.*.*"') do (
    set "dts=%%c"
    setlocal enabledelayedexpansion
    set "yyyy=!dts:~0,4!"
    set "mm=!dts:~4,2!"
    set "dd=!dts:~6,2!"
    set "hh=!dts:~8,2!"
    set "min=!dts:~10,2!"
    set "sec=!dts:~12,2!"
    echo File: %%a.%%b.%%c.%%d date/time: !dd!/!mm!/!yyyy! -- !hh!:!min!:!sec!
    endlocal
)