繁体   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