bat脚本 自动上传文件到ftp服务器(根据年,月,日自动生成年,月,日文件夹及定时自动更新前一天数据)

实验环境:

根据录音服务器保存的路径 在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任务计划程序:

控制面板\系统和安全\管理工具\任务计划程序 

创建基本任务

标题
标题
标题
标题
标题
标题

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值