簡體   English   中英

在批處理文件中保留文件名中的條件

[英]Keeping conditions in filenames in batch file

我在C:\\temp\\20120214.003_visual_sciences_web_feed.out.gz文件中有幾個日志文件。 為這些日志文件創建的文件名根據它們創建之日的 YYYMMDD 格式命名。 現在我想編寫一個批處理文件,檢索在 1-jan-2013 到 1-sep-2013 之間創建的文件的日志文件。

我是批處理文件腳本的新手。 基於文件名,我正在考慮遍歷所有文件,從 1-6 中獲取每個文件名的索引並對其進行過濾以檢查日期條件(使用 BETWEEN date1 和 date2)。

如何使用 AND 條件以簡單的方式完成此操作,或者我們還有其他方法嗎?

很難確切地說出你想要什么。 但我相信這應該很接近:

從命令提示符(無批處理):

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
)

上述解決方案將包含 1-sep-2013 的文件。 如果您不想包含該日期,請將最后一個字符串更改為“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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM