2013-10-15 65 views
0

嗨,我有幾個日誌文件在C:\ temp \ 20120214.003_visual_sciences_web_feed.out.gz文件。爲這些日誌文件創建的文件名在它們創建的那一天基於YYYMMDD格式命名, 現在我想編寫一個批處理文件,該文件根據以下條件檢索日誌文件: 「1-jan-2013之間創建的文件1-sep-2013「。需要幫助保持批處理文件中的文件名條件

我是批處理文件腳本的新手。 基於文件名我想循環所有的文件,獲取每個和每個文件名從1-6的索引,並過濾它檢查日期條件(使用BETWEEN date1和date2) 任何人可以幫助我在這個如何做到這一點使用和條件簡單的方法還是我們有任何其他方式

感謝

+0

我相信你的意思是說YYYYMMDD格式(您缺少Y) – dbenham

+0

是的,對不起,你是對的 – user2883028

回答

0

這是很難告訴正是你想要的。但我相信這應該是接近:

在命令提示符(無批次):

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 
+0

由於它的工作 此外,我想這些文件複製到C:\ temp4。 Similary我需要將類似的匹配文件從c:\ temp2複製到c:\ temp4 我正在修改腳本,如下所示,但腳本無法正常工作。 請建議 關閉@echo NET USE X:\\ fwtgvs250win \ F $ /用戶:srvvsbatchfiles * FOR/F 「delims =」 %%的F( 「DIR/B「C:\ TEMP2 \ * _飼料。 out.gz「&&」c:\ temp3 \ * _feed.out.gz「^ | findstr」^ [0-9] [0-9] [0-9] [0-9] [0-9] [0 -9] [0-9] [0-9] \。' )如果「%% F」geq「20130101」if「%% F」lss「20130902」echo do copy「c:\ temp4 \」 %% F 請建議 – user2883028

+0

嗨,你可以請進一步建議以上。 – user2883028