用脚本实现文件到FTP服务器的实时上传

因为工作需要用脚本实现文件到FTP服务器的实时上传,但是由于资安问题无法使用文件映射的方式,所以写了个脚本实现这个功能,在这里做个记录

前情提要
脚本中
路径C:\test\下爲要上传文档
路径C:\test2\为临时存放文档的路径
登录FTP的账号需要有创建文件的权限

脚本逻辑

第一次上传
1.将上传的文件用dir命令将所有符合条件的文件的路径保存到num1.TXT文件
2.用for循环按num1.TXT文件内容移动(move)到中转文件夹下
3.上传所有数据
4.删除test2中的文档,避免重复上传

// @echo on
rem  用管理员身份运行
mode con lines=30 cols=60
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
set /a D=%date:~0,4%%date:~5,2%%date:~8,2%
cd \
cd test
dir /s /a /b >>C:\num1.txt
cd ..
md test2
for /f %%a in (num1.txt) do ( xcopy /y "%%a" "test2")
cd test2
echo open IP>ftp.tmp
Echo用户名>>ftp.tmp
echo 密码>>ftp.tmp
echo binary>>ftp.tmp  
echo mkdir log_%D%>>ftp.tmp
echo cd log_%D%>>ftp.tmp 
echo mput *.txt *.7z *.zip>>ftp.tmp
echo bye>>ftp.tmp
ftp -i -s:ftp.tmp
del ftp.tmp
cd ..
del test2 /f/s/q/a

实时上传
1.用dir命令将所有符合条件的文件的路径保存到num2.TXT文件(新增后)
2.比较num1.TXT与num2.TXT文件,将num2.TXT有num1.TXT没有的数据保存到num3.TXT中(即新增文件的路径)
3.等待时间 120秒(如果不等待,可能会有文件没有完全抓取,例如新建文档还没有命名就进行下一步)
4.用for循环按num3.TXT文件内容移动(move)到中转文件夹下
5.上传所有数据
6.删除num1.TXT与num3.TXT文件,将num2.TXT重命名爲num1.TXT(即永远保证num1.TXT中的数据比num2.TXT少
7.循环时间5秒一次

// @echo off
:start
mode con lines=30 cols=60
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"

cd \
cd test
dir /s /a /b >>C:\num2.txt

cd ..
setlocal
cd.>num3.txt
for /f "delims=" %%i in (num1.txt) do SET %%i=A
for /f "delims=" %%j in (num2.txt) do  if /I not defined %%j echo %%j>>num3.txt
Endlocal

choice /t 120 /d y /n

for /f %%a in (num3.txt) do ( xcopy /y "%%a" "test2")

cd test2
echo open IP>ftp.tmp
Echo用户名>>ftp.tmp
echo 密码>>ftp.tmp
echo binary>>ftp.tmp
echo cd /test>>ftp.tmp
echo mput *.txt *.7z *.zip>>ftp.tmp
echo bye>>ftp.tmp
ftp -i -s:ftp.tmp
del ftp.tmp

cd ..
del num1.txt /f/s/q/a
del test2 /f/s/q/a
del num3.txt /f/s/q/a
rename num2.txt num1.txt

choice /t 5 /d y /n
goto:start

记得根据自己的实际应用场景修改参数,根据文档更新速度调整延迟时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值