由于批处理很难判断ftp下载何时能够完成,建议分成两个bat来做: 先运行download.bat @echo off rem 指定FTP用户名 set ftpUser=USERNAME rem 指定FTP密码 set ftpPass=PASSWORD rem 指定FTP服务器地址 set ftpIP=192.168.0.2 rem 指定待下载的文件位于FTP服务器的哪个目录 set ftpFolder=/SharedFile/Log/ rem 指定从FTP下载下来的文件存放到本机哪个目录 set LocalFolder=C:/temp/ set ftpFile=%temp%/TempFTP.txt >"%ftpFile%" echo,%ftpUser% >>"%ftpFile%" echo,%ftpPass% >>"%ftpFile%" echo cd "%ftpFolder%" >>"%ftpFile%" echo lcd "%LocalFolder%" >>"%ftpFile%" echo bin >>"%ftpFile%" echo mget *.* >>"%ftpFile%" echo bye start ftp -v -i -s:"%ftpFile%" %ftpIP% ftp下载完成以后,再运行compare.bat @echo off ::演示:用FTP下载的文件去更新本机的文件。 ::如果演示结果无误,把copy前面的echo去掉,即可实现真正更新。 rem 指定从FTP下载下来的文件存放到什么地方 set LocalFolder=C:/test rem 指定待比较的本机文件存放到什么地方 set CompareFolder=C:/dat for /f "skip=4 delims= " %%a in ('reg query "HKEY_CURRENT_USER/Control Panel/International" /v sTimeFormat') do ( set "RegTimeOld=%%a" ) set RegTimeOld=%RegTimeOld:~-8% reg add "HKEY_CURRENT_USER/Control Panel/International" /v sTimeFormat /t REG_SZ /d H:mm:ss /f>nul >"%temp%/DownList.txt" type nul for /f "skip=5 delims=" %%a in ('dir "%LocalFolder%"^|findstr ":*[a-z]"') do ( >>"%temp%/DownList.txt" echo %%a ) >"%temp%/CompareList.txt" type nul for /f "skip=5 delims=" %%a in ('dir "%CompareFolder%"^|findstr ":*[a-z]"') do ( >>"%temp%/CompareList.txt" echo %%a ) reg add "HKEY_CURRENT_USER/Control Panel/International" /v sTimeFormat /t REG_SZ /d %RegTimeOld% /f>nul findstr /x /v /g:"%temp%/CompareList.txt" "%temp%/DownList.txt">"%temp%/CopyList.txt" for /f "usebackq tokens=4 delims= " %%a in ("%temp%/CopyList.txt") do ( echo copy /y "%LocalFolder%/%%a" "%CompareFolder%" ) pause