这是很难告诉正是你想要的。但我相信这应该是接近:
在命令提示符(无批次):
for /f "delims=" %F in ('dir /b "c:\temp\*.out.gz"') do @if "%F" geq "20130101" if "%F" lss "20130902" @echo %F
从批处理脚本中:
for /f "delims=" %%F in ('dir /b "c:\temp\*.out.gz"') do if "%%F" geq "20130101" if "%%F" lss "20130902" echo %%F
或很好的格式化的:
@echo off
for /f "delims=" %%F in ('dir /b "c:\temp\*.out.gz"') do (
if "%%F" geq "20130101" if "%%F" lss "20130902" echo %%F
)
上述解决方案将包含2013年1月1日以前的文件。如果您不想包含该日期,则将最后一个字符串更改为“”20130901“'。
请注意,IF正在进行字符串比较,而不是日期或数字比较。这仅适用于您的日期格式为YYYYMMDD。
如果您有其他.out.gz
文件不以日期开头,因此应该忽略,那么您可以添加FINDSTR正则表达式以更具选择性。不幸的是,FINDSTR正则表达式支持非常有限 - 没有支持像[0-9]{8}
这样的东西。
@echo off
for /f "delims=" %%F in (
'dir /b "c:\temp\*.out.gz"^|findstr "^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.'
) do if "%%F" geq "20130101" if "%%F" lss "20130902" echo %%F
我相信你的意思是说YYYYMMDD格式(您缺少Y) – dbenham
是的,对不起,你是对的 – user2883028