2014-12-23 49 views
0

我必須將最新或最新的文件從服務器複製到另一臺服務器。使用.bat命令複製最新或最新文件

我有這樣

@echo off 
set source="\\tsclient\F\Project Documentation" 
set target="C:\Users\xyz\Desktop\DS\datafiles" 

FOR /F "delims=" %%I IN ('DIR %source%\*.xml /A:-D /O:-D /B') DO COPY %source%\"%%I" %target% & echo %%I & GOTO :END 
:END 
TIMEOUT 4 

問題是一個代碼,這將只複製1個文件,有兩個新的文件。如何複製第二個?

+0

你怎麼知道哪些文件被認爲是「最新的?」從最初的問題來看,它只會複製1個文件,因爲只有1個文件可以成爲最新的文件。你能提供一個文件夾結構和示例文件的例子,並描述你期望的行爲嗎? – KingOfTheNerds

+0

最新版本基於文件的修改日期。 –

+0

如果你打算修改日期,你怎麼能有2個「最新?」一個文件幾乎總是比另一個文件更新...我誤解了什麼? – KingOfTheNerds

回答

1

您可以用延遲擴展和這樣的循環變量做到這一點:

@echo off 
setlocal enabledelayedexpansion 

set "source=\\tsclient\F\Project Documentation" 
set "target=C:\Users\xyz\Desktop\DS\datafiles" 

set loop=1 
FOR /F "delims=" %%I IN ('DIR "%source%\*.xml" /A:-D /O:-D /B') DO (
    COPY "%source%\%%~nxI" "%target%" 
    echo %source%\%%~nxI 
    if !loop! equ 2 GOTO END 
    set /a loop+=1 
) 
:END 
TIMEOUT 4 

它會一直複製2個文件,但。如果你只有一個新文件,你仍然會複製兩個文件。

+0

這不起作用。沒有文件被複制並拋出網絡路徑未找到的錯誤。 –

+0

@ Arun.K嘗試編輯。 – rojo

+0

錯誤表示目標路徑C:\ Users \ xyz \ Desktop \ DS \ datafiles無效。它正在與我以前的代碼一起工作。 –

相關問題