2013-10-15 62 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