很难准确地说出你想要什么。但我相信这应该很接近:
从命令提示符(无批处理):
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 年 9 月 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