Windows FOR语句解析文件名中的日期时间戳
我将如何在FOR语句中完成以下内容 我在windows PC目录中有一些文件,我想通过文件名中的全部或部分日期戳来识别这些文件,即-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
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
)