首页 > 系统相关 >Windows系统BAT脚本FTP传输最新文件

Windows系统BAT脚本FTP传输最新文件

时间:2022-08-24 16:01:27浏览次数:51  
标签:FTP BAT ftpdolog% Windows Echo 文件夹 rem 拷贝

一、场景分析

在Windows系统下,通常使用共享文件夹结合任务计划方式实现文件定期自动拷贝至异机,本文中给出另一种方式即通过FTP进行拷贝。简单FTP命令中需指定文件名,但由于需拷贝文件名不固定,因此对BAT脚本进行了改造,使其自动获取文件名并调用FTP进行传输,详细介绍如下。

二、具体配置

1、单独文件拷贝

首先cmd执行ftp,确认windows系统已有ftp程序(一般操作系统默认自带),然后新建txt文件,写入如下命令并对应修改后修改后缀为bat

 

@Echo Off

setlocal enabledelayedexpansion

rem 准备执行

set src_dir=D:\DBbackup\

rem 设置文件所在目录

rem 定义变量filename用于存放目标文件名

set filename=""

set ftpdolog="D:\DBbackup\Run\FTPLOG.txt"

rem 设置FTP命令临时txt

set loginfo="D:\DBbackup\RunLog\ LOG.txt"

rem 设置整体操作日志

cd /d %src_dir%

for /f %%a in ('dir /s /o-d /tc  /b ') do (

    set filename=%%~na%%~xa

    if not !filename! == ""  (        goto iconv    )

 )

rem 其中最关键是/o-d,表示按照文件创建日期从后到先排序

:iconv

rem echo %filename%

rem 实际输出的是最新的文件名,带后缀

set user=ftp用户名

set pawd=ftp密码

Echo open 异机FTP服务器IP>%ftpdolog%

rem 如果FTP服务器非默认21端口,则此处IP+空格+新端口,如open 192.168.1.100 2100

Echo %user%>>%ftpdolog%

Echo %pawd%>>%ftpdolog%

Echo cd 项目管理系统数据库>>%ftpdolog%

Echo binary>>%ftpdolog%

Echo prompt>>%ftpdolog%

Echo mput %src_dir%%filename%>>%ftpdolog%

Echo bye>>%ftpdolog%

rem 将ftp命令写入临时FTP命令txt中,待后续调用

FTP -s:%ftpdolog%>>%loginfo%

rem 此处>>是将日志追加写入,也可改成一个箭头>每日覆盖日志

rem FTP调用日志文件 -s

echo %DATE%%time%>>%loginfo%

del %ftpdolog% /q

rem 最后删除无用的ftp命令临时txt

 

此时,直接运行该BAT即可将设定文件夹中最新单个文件拷贝至FTP服务器,通过合理配置生成时间及计划任务执行时间即可实现定期自动将文件FTP拷贝至异机。

2、多个文件拷贝

当存在多个文件需要拷贝时,需要将多个文件分文件夹存放,同时配置多个如上BAT命令,最后另行编写BAT脚本如下进行统一调用,路径及文件名自行修改

 

@echo off

rem 通过FTP方式,拷贝数据库至FTP服务器

call D:\DBbackup\FTPCOPYBAT\FTPCopyBAT1.bat

call D:\DBbackup\FTPCOPYBAT\FTPCopyBAT2.bat

call D:\DBbackup\FTPCOPYBAT\FTPCopyBAT3.bat

rem 如此可继续添加

三、补充说明

1、目前bat脚本是通过识别并输出文件夹中最新文件文件名传递给FTP进行传输,暂无法限定识别特定后缀名

2、需要在防火墙中对应添加至FTP服务器的入站规则

3、部分杀毒软件会默认拦截此类调用FTP命令操作,因此需要注意杀毒软件中添加例外。

4、共享文件夹方式拷贝文件bat如下

 

net use \\异机IP地址\共享文件夹 /d /y

net use \\异机IP地址\共享文件夹 "异机密码" /user:"异机用户名"

robocopy G:\文件夹 *.dmp \\异机IP地址\共享文件夹    /maxage:7

rem *.dmp或*.bak设定文件后缀名

rem maxage为拷贝最近7天文件,7天前的文件不在拷贝范围内

rem 此为注释

net use \\异机IP地址\共享文件夹 /d /y

标签:FTP,BAT,ftpdolog%,Windows,Echo,文件夹,rem,拷贝
From: https://www.cnblogs.com/moonliu/p/16620303.html

相关文章

  • 没有jmeter.bat的解决方法
    1:安装好jmeter,却没有jmeter.bat的原因:文件拓展名被隐藏2:本文电脑配置:windows113:解决方法:任意打开文件夹,点击菜单栏“查看”-显示-文件扩展名,如下图4:验证方法:打开jmeter......
  • Windows下编译并裁剪FFmpeg
    Windows下编译并裁剪FFmpeg本文主要介绍下如何在Windows环境下编译出FFmpeg的可执行环境ffmpeg.exe,并通过一个例子演示如何对其进行裁剪,使其体积变小。一.工具与环境......
  • windows使用/服务(3)windows11 部署tomcat图文教程
    参考地址:https://zhuanlan.zhihu.com/p/874392681、下载JDK安装包,下载地址:下载JDK安装包,已安装jdk忽略Java18oracle-jdk官网:https://www.oracle.com/java/techno......
  • Windows2016/2019评估版转正式版
    (15条消息)WindowsServer2012和2016从Evaluation评估版升级到正式版方法(附带产品密钥/key)_vivisosog的博客-CSDN博客_server2016安装密钥解析说明:什么叫做Evaluation评......
  • Windows 提权方式总结
    Windows提权方式总结from: https://www.geekby.site/2021/01/windows%E6%8F%90%E6%9D%83%E6%96%B9%E5%BC%8F%E6%80%BB%E7%BB%93/Windows提权方式总结1前言1.1......
  • WPF中使用 WndProc 来处理Windows Messages
    WPF对应的C#程序有时需要与Window32程序进行通信,会使用到窗口过程函数来接受Windows消息。引入System.Windows.Interop命名空间,将使用到其中的HwndSource使用实例如......
  • Spring Boot +Mybatis plus多数据源实践
    随着业务及客户的不断壮大,单数据库已经不足以支撑程序业务的完美运行(响应快、高吞吐),所以数据库往往都会进行分表分库/读写分离,那么问题来了,分库后程序如何从不同URL......
  • python获取Windows硬件特征信息
    1.pythonpip安装WMI并用pyinstaller编译出device_chk.exe#参考内容:https://blog.csdn.net/fengmm521/article/details/79468677#!/usr/bin/envpython#-*-coding:......
  • Windows下如何查看某个端口被谁占用
    Windows下如何查看某个端口被谁占用分类 编程技术开发时经常遇到端口被占用的情况,这个时候我们就需要找出被占用端口的程序,然后结束它,本文为大家介绍如何查找被占用的......
  • 解决windows10虚拟桌面不能换桌面的问题--使用软件SylphyHorn
    GitHub:https://github.com/Grabacr07/SylphyHornwindows应用商店:https://apps.microsoft.com/store/detail/sylphyhorn/9NBLGGH58T01?hl=en-us&gl=US软件截图:效果......