2017-04-20 78 views
0

我試圖從一個文件夾提取指定的XML數據到另一個文件夾。使用最新日期提取文件

問題是我只需要最新的。當前日期應該確定最新的XML文件。比如今天:2017年4月20日

我scirpt如下:

-----------------test.bat-------------- 
@echo off&pushd \\server5\Datapool 
for /f %%a in ('dir /b ^| find ".xml"') do for /f %%A in ('type %%a ^| find /I "Marc" ^| find /I "BENZ231"') do copy %%a C:\Users\folder1 
-----------------test.bat-------------- 

所以我的目標是將最新的XML文件解壓到另一個文件夾只有當「馬克」 +「BENZ231」匹配。

btw:字符串「marc」和「benz231」在同一行上。

+3

你的問題與XML完全沒有關係,我已經刪除了標籤。僅僅因爲你試圖用XML擴展來移動文件,它並沒有提出關於XML的問題。請不要標記垃圾郵件;僅使用** **與您的帖子實際相關的標籤。您可以在使用它之前通過閱讀標籤描述來確定它們是否是。標籤在這裏有意義和相關性,這就是爲什麼每個人都有一個關於它是什麼和應該使用什麼的描述。謝謝。 –

+0

我會考慮到這一點。謝謝 – Zaynqx

+0

請不要發佈[重複](http://stackoverflow.com/q/43493012/2152082)。使用'xcopy'而不是'copy' - 它有一個功能,只複製比指定日期更新的文件。另外'/ m'參數可能是有意義的。請參閱'xcopy/?'獲取更多幫助。 – Stephan

回答

0

嘗試

rem -----------------test.bat-------------- 
@echo off & SetLocal EnableDelayedExpansion 
set "file=" 
set "srcFolder=\\server5\Datapool" 
set "dstFolder=C:\Users\folder1" 

rem language independent time 
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do set "Tm=%%a" 
set "today=%Tm:~0,4%%Tm:~4,2%%Tm:~6,2%" 

pushd "%srcFolder%" 
for /f "usebackq tokens=*" %%a in (`dir /b /o:d *.xml`) do (
    set "fileTime=%%~ta" 
    rem set "fileTime_spanish=!fileTime:~6,4!!fileTime:~3,2!!fileTime:~0,2!" 
    set "fileTime_english=!fileTime:~6,4!!fileTime:~0,2!!fileTime:~3,2!" 
    if "!fileTime_english!" equ "%today%" (
    findstr /irc:"marc.*BENZ231" /c:"BENZ231.*marc" %%a && copy "%%a" "%dstFolder%" 
) 
) 
popd 
EndLocal 
exit/B 
rem -----------------test.bat-------------- 

注意/o:d開關dir命令列出文件按日期(最新最後一次)進行排序的。更改了for循環以將file變量設置爲與dir通配符匹配的所有文件,並將字符串傳遞給findstr。由於dir已列出按日期排序的文件,因此file變量將根據這兩個條件包含最新的文件。

EDITED 25/04/2017

注意現在使用delayed expansion作爲filetime_xxx是一個塊(括號內的任何)的內部更新,並且延遲變量擴展。現在在!包圍變量名。

您可能需要調整filetime_xxx以適合系統可能使用的任何日期排序順序。

這不是最好的辦法,而是一個起點。

+1

要支持可能的文件名和空格,您需要將'delims ='或'tokens = *'添加到for選項和雙引號'「%file%」' – LotPings

+0

@LotPings你是對的!我不在我的電腦前。發佈編輯。 – elzooilogico

+0

嘿!感謝您的回覆,並對我遲到的回覆感到抱歉。它適用於我一半,但只複製一個單一的文件。它應該複製所有新的馬克+奔馳231。我在做什麼?錯誤?編輯:我沒有向正確的方向解釋自己。如果上面提到的屬性匹配,我想從今天的日期複製所有文件。對不起,不清楚。 – Zaynqx