這是很難告訴正是你想要的。但我相信這應該是接近:
在命令提示符(無批次):
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