批处理脚本列出选定的.xml,其名称中的日期具有.txt文件的文件名

时间:2013-11-27 13:41:50

标签: xml batch-file batch-processing

先谢谢您的帮助。

我在文件夹中有一些日期在文件名中的xml文件。

示例

  • 资料-20131126-1.xml
  • 资料-20131125-2.xml
  • 资料-20131124-5.xml
  • Logic145242013_11_26.xml
  • Logic154752013_11_25.xml
  • Logic154852013_11_24.xml

现在我需要获取小于26-11-2013的日期的文件名到.txt文件。日期可以在文件名中看到。

所以输出应该如下所示。

  • 资料-20131125-2.xml
  • 资料-20131124-5.xml
  • Logic154752013_11_25.xml
  • Logic154852013_11_24.xml

有人可以帮我批量处理脚本。

谢谢和问候, 希瓦

1 个答案:

答案 0 :(得分:0)

我没有看到其他解决方案,而不是将问题分成两部分: for Profile - * .xml文件 以及Logic * .xml的。

在下面的脚本中,我使用了与20131126的比较来获取旧文件。将部分文件名拆分以获取上述格式的日期,以便进行比较。

@echo off
setlocal EnableDelayedExpansion

set mydate=20131126

rem take each file name
for %%a in (Profile-*-*.xml) do (
    rem take only data, split by dash and take second value
    for /F "tokens=2 delims=-" %%f in ("%%a") do (
        rem compare with 20131126
        if %%f LSS %mydate% (   
            echo %%a>>txtfile.txt
            rem Add processing of your files here  
        )
    )
)

rem take each file name
for %%a in (Logic*_*_*.xml) do (     
    rem put the value in a local parameter
    set filename=%%a
    rem take only the last 14 to 4 letters 
    set filename=!filename:~-14,-4!
    rem remove underscores
    set filename=!filename:_=!
    rem compare with 20131126
    if !filename! LSS %mydate% (         
        echo %%a>>txtfile.txt
        rem Add processing of your files here 
    )   
)