实验环境:
根据录音服务器保存的路径 在ftp服务器自动生成对应的路径并保存录音。
如 录音服务器自带软件备份录音2019年12月22日的录音到D:\luyin\2019\12\22 则需要同步到ftp://172.160.1.50/Recordingbackup/2019/12/22 路径内。
思路:
第一步先获取当前时间,然后在根据时间算法计算出前一天的时间。第二步判断ftp路径下有无当前时间前一天的文件夹,存在的话就直接开始复制文件,不存在创建文件夹在开始复制。
注意:因为会根据时间自动在当前的log目录下生成日志文件所以需要在当前路径下创建个log目录,本地路径及ftp路径均不允许有中文。
bat脚本:
@echo off&&setlocal enabledelayedexpansion set "LY=null" set "LM=null" set "LD=null" rem 初始化宏定义年,月,日时间 set "isdir=null" rem 判断有无指定文件夹标识 set "lcd=D:\luyin" rem 本地录音路径 set "ftpcd=Recordingbackup" rem ftp路径 set "FTPip=172.160.1.50" rem ftpip地址 set "FTPuser=abc" rem ftp账号 set "FTPpwd=123456" rem ftp密码 rem ===================主程序入口============================ call:GetstrLstDt echo !LY!!LM!!LD! call:isDir !ftpcd! 4 !LY! if !isdir!==1 ( set "isdir=null" call:isDir !ftpcd!/!LY! 2 !LM! if !isdir!==1 ( set "isdir=null" call:isDir !ftpcd!/!LY!/!LM! 2 !LD! if !isdir!==1 ( set "isdir=null" echo 开始复制!!获得路径为:!ftpcd!/!LY!/!LM!/!LD! )else ( set "isdir=null" call:FTPmkdir !ftpcd!/!LY!/!LM! !LD! echo 开始复制!!获得路径为:!ftpcd!/!LY!/!LM!/!LD! ) )else ( set "isdir=null" call:FTPmkdir !ftpcd!/!LY! !LM! call:isDir !ftpcd!/!LY!/!LM! 2 !LD! if !isdir!==1 ( set "isdir=null" echo 开始复制!!获得路径为:!ftpcd!/!LY!/!LM!/!LD! )else ( set "isdir=null" call:FTPmkdir !ftpcd!/!LY!/!LM! !LD! echo 开始复制!!获得路径为:!ftpcd!/!LY!/!LM!/!LD! ) ) )else ( set "isdir=null" call:FTPmkdir !ftpcd! !LY! call:isDir !ftpcd!/!LY! 2 !LM! if !isdir!==1 ( set "isdir=null" call:isDir !ftpcd!/!LY!/!LM! 2 !LD! if !isdir!==1 ( set "isdir=null" echo 开始复制!!获得路径为:!ftpcd!/!LY!/!LM!/!LD! )else ( set "isdir=null" call:FTPmkdir !ftpcd!/!LY!/!LM! !LD! echo 开始复制!!获得路径为:!ftpcd!/!LY!/!LM!/!LD! ) )else ( set "isdir=null" call:FTPmkdir !ftpcd!/!LY!/ !LM! call:isDir !ftpcd!/!LY!/!LM! 2 !LD! if !isdir!==1 ( set "isdir=null" echo 开始复制!!获得路径为:!ftpcd!/!LY!/!LM!/!LD! )else ( set "isdir=null" call:FTPmkdir !ftpcd!/!LY!/!LM! !LD! echo 开始复制!!获得路径为:!ftpcd!/!LY!/!LM!/!LD! ) ) ) call:FTPupfiles !lcd!\!LY!\!LM!\!LD! !ftpcd!/!LY!/!LM!/!LD! rem ===================================================== rem ==================函数分界线======================== rem ===============获取昨天时间函数====================== :GetstrLstDt set YE=%date:~0,4% set MO=%date:~5,2% set DA=%date:~8,2% set DG=1 set/a vY1=%YE% %% 400 set/a vY2=%YE% %% 4 set/a vY3=%YE% %% 100 if %vY1%==0 (set var=true) else (if %vY2%==0 (if %vY3%==0 (set var=false) else (set var=true)) else (set var=false)) set LY=%YE% set LM=%MO% if %MO:~0,1%==0 (set MO=%MO:~1,1%) if %DA:~0,1%==0 (set DA=%DA:~1,1%) if %DA% GTR %DG% (set/a LD=%DA%-%DG%) else ( if %MO%==1 (set/a LY=%YE%-1) & (set/a LM=12) & (set/a LD=31+%DA%-%DG%) else ( set/a LM=%MO%-1 if %MO%==3 (if %var%==false (set/a LD=28+%DA%-%DG%) else (set/a LD=29+%DA%-%DG%)) for %%a in (2 4 6 8 9 11) do (if "%MO%"=="%%a" (set/a LD=31+%DA%-%DG%)) for %%b in (5 7 10 12) do (if "%MO%"=="%%b" (set/a LD=30+%DA%-%DG%)))) if %LM% LSS 10 set LM=0%LM:~-1% if %LD% LSS 10 set LD=0%LD:~-1% set LY=%LY% set LM=%LM% set LD=%LD% goto:eof rem ===============获取昨天时间函数====================== rem ==================判断有无此目录===================== :isDir Echo open !FTPip!>ftp.txt Echo !FTPuser!>>ftp.txt Echo !FTPpwd!>>ftp.txt Echo cd %1% >>ftp.txt Echo dir >>ftp.txt Echo quit >>ftp.txt FTP -s:ftp.txt >dirList.log for /f "delims=" %%i in (dirList.log) do ( set "filename=%%i" set "f=!filename:~-4,3!" if "!f!"=="dir" (set p=1) if "!p!"=="1" ( if %2%==4 ( set l=!filename:~-4,4! ) if %2%==2 ( set l=!filename:~-2,2! ) if "!l!"=="%3%" ( set isdir=1 ) ) ) goto:eof rem =================判断有无此目录===================== rem ==================新建目录===================== :FTPmkdir Echo open !FTPip!>ftp.txt Echo !FTPuser!>>ftp.txt Echo !FTPpwd!>>ftp.txt Echo cd %1% >>ftp.txt Echo mkdir %2% >>ftp.txt Echo quit >>ftp.txt FTP -s:ftp.txt goto:eof rem ==================新建目录===================== rem ==================复制文件===================== :FTPupfiles Echo open !FTPip!>ftp.txt Echo !FTPuser!>>ftp.txt Echo !FTPpwd!>>ftp.txt Echo prompt off >>ftp.txt Echo lcd %1% >>ftp.txt Echo cd %2% >>ftp.txt Echo mput *.wav >>ftp.txt Echo bye >>ftp.txt Echo prompt on >>ftp.txt FTP -s:ftp.txt>>log/!LY!!LM!!LD!.log echo 复制完毕 goto:eof rem ==================复制文件=====================
设置windows任务计划程序:
控制面板\系统和安全\管理工具\任务计划程序
创建基本任务
bat脚本 自动上传文件到ftp服务器(根据年,月,日自动生成年,月,日文件夹及定时自动更新前一天数据)
最新推荐文章于 2022-12-01 09:22:20 发布