我必须将最新或最新的文件从服务器复制到另一台服务器。
我有这样的代码
@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)
你可以使用延迟扩展和这样的循环变量:
@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个文件。如果您只有一个新文件,那么您仍然会复制两个文件。