2013-11-27 54 views
0

在此先感謝您的幫助。批處理腳本列出所選.xml文件名中含有日期的文件名爲.txt文件

我有一些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

能有人幫我批次腳本。

感謝和問候, 西瓦

+0

在這個目錄中的例子是** ONLY **文件結構嗎?邏輯文件在日期部分之前總是有5個數字嗎? –

回答

0

這裏我就不看其他的解決方案相比,2份分割問題: 的檔案 - * XML文件 和邏輯* .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 
    ) 
) 
+0

Hi Mihai,我面對的問題是日期對應於當前日期。例如Think今天的日期是28-11-2013。並在文件夾中擁有文件Profile-20131126-1.xml Profile-20131125-2.xml Profile-20131124-5.xml Profile-20131127-5.xml Logic145242013_11_27.xml Logic154752013_11_25.xml。在這種情況下,只有以下文件應該輸入.txt文件。 Profile-20131126-1.xml Profile-20131125-2.xml Profile-20131124-5.xml Logic154752013_11_25.xml。我的意思是說日期部分少於當天應該是輸出 – user3041851

+0

嗨Siva。請刪除代碼中的評論或放入我編輯的其他行中。在原始問題中,您需要日期小於26-11-2013的文件在輸出中。您可以將當前日期作爲參數傳遞給腳本,或者自動獲取它,但這可能非常棘手。 –

相關問題