批处理之FTP自动同步文件

article/2025/10/8 2:05:22

1. FTP.exe工具

ftp.exe是Windows系统提供的一个FTP客户端命令行工具。通过ftp.exe可以完成登录,显示远程文件、下载、上传、重命名、删除远程文件等操作。

1.1. 命令参数

FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [host]

  • -v 禁止显示远程服务器响应。
  • -n 禁止在初始连接时自动登录。
  • -i 关闭多文件传输过程中的交互式提示。
  • -d 启用调试。
  • -g 禁用文件名通配(请参阅 GLOB 命令)。
  • -s:filename 指定包含 FTP 命令的文本文件;命令在 FTP 启动后自动运行。
  • -a 在绑字数据连接时使用所有本地接口。
  • -A 匿名登录。
  • -x:send sockbuf 覆盖默认的 SO_SNDBUF 大小 8192。
  • -r:recv sockbuf 覆盖默认的 SO_RCVBUF 大小 8192。
  • -b:async count 覆盖默认的异步计数 3
  • -w:windowsize 覆盖默认的传输缓冲区大小 65535。
  • host 指定主机名称或要连接到的远程主机的 IP 地址。
  • mget 和 mput 命令将 y/n/q 视为 yes/no/quit。
  • 使用 Ctrl-C 中止命令。
  • 注意:一般情况,我们主要是通过ftp.exe来调用ftp命令文件,主要使用如下方式:

FTP -i -s:ftpCMD.txt

1.2. FTP命令

FTP命令可以在ftp.exe命令行环境下单个运行,也可以集成文件中,通过FTP -s:ftpCMD.txt这样的方式全部运行。以下列出所有的FTP命令。

  • ! 转义到 shell
  • delete 删除远程文件
  • literal 发送任意 ftp 命令
  • prompt 在多个命令上强制交互提示
  • ? 打印本地帮助信息
  • debug 切换调试模式
  • ls 列出远程目录的内容
  • put 发送一个文件
  • send 发送一个文件,作用同put
  • mput 发送多个文件
  • status 显示当前状态
  • append 附加至文件
  • dir 列出远程目录的内容
  • mdelete 删除多个文件
  • pwd 在远程计算机上打印工作目录
  • trace 切换数据包跟踪
  • ascii 设置 ASCII 传输类型
  • disconnect 终止 ftp 会话
  • mdir 列出多个远程目录的内容
  • quit 终止 ftp 会话并退出
  • type 设置文件传输类型
  • bell 命令完成时发出声响
  • get 接收文件
  • recv 接收文件,作用同get。
  • mget 获取多个文件
  • quote 发送任意 ftp 命令
  • user 发送新用户信息
  • binary 设置二进制传输类型
  • glob 切换本地文件名的元字符扩展
  • mkdir 在远程计算机上创建目录
  • verbose 切换详细模式
  • bye 终止 ftp 会话并退出
  • hash 为每个缓冲区传输切换打印“#”
  • mls 列出多个远程目录的内容
  • remotehelp 从远程服务器获取帮助
  • cd 更改远程工作目录
  • help 打印本地帮助信息
  • rename 重命名文件
  • close 终止 ftp 会话
  • lcd 更改本地工作目录
  • open 连接到远程 FTP
  • rmdir 在远程计算机上删除目录

1.3. 重点命令介绍

在ftpCMD.txt中编写FTP命令操作集,然后通过FTP -s:ftpCMD.txt来调用。

  • 通过prompt关闭或开启确认提示,首次调用为关闭提示,再次调用则为开启提示
  • 通过lcd命令来指定本地工作目录

lcd 本地工作目录

  • 通过get/recv下载远程文件,本地文件名如果省略则和远程文件同名

get RemoteFile [LocalFile]

  • 通过mget下载多个远程文件,远程文件至少1个,多个以空格区分,mget默认支持通配符(但是需要FTP服务,有的FTP不支持,FileZilla服务器支持通配符)

mget RemoteFiles [ …]
mget *.ini

  • 通过put/send上传本地文件,远程文件如果省略则和本地文件同名

put LocalFile [RemoteFile]

  • 通过mput上传本地文件到FTP服务器当前目录,本地文件至少1个,多个以空格区分

mput LocalFiles [ …]

  • 通过mls保存远程目录下的文件及文件夹名,远程文件如果用-代替表示所有,本地文件用-代替表示输出到屏幕

mls RemoteFiles [ …]LocalFile

  • 通过type指定传输类型,Ftp 同时支持 ASCII 和Binary两种文件传输类型。 默认的传输类型是 ASCII。在传输文本文件时应使用 ascii 命令。在 ASCII 模式中,将执行网络标准字符集间的字符转换。例如,行尾的字符在必要时根据目标操作系统进行转换。在传输可执行文件时应该使用 binary 命令。在二进制模式中,文件是按一字节为单位进行移动的。

type [TypeName]

  • quit退出FTP命令行模式进入CMD窗口

1.4. 示例

172.18.30.182是FTP服务器IP,mike是用户名,123456是密码,注意mike和123456之后不要用空格

open 172.18.30.182
mike
123456
prompt
type binary
lcd I:\ftp_local
mls - info.txt
get a.ini
mget 1.ini 2.ini
put info.txt
mput aa.ini bb.ini
quit

如果不想另外编写FTP命令文件,可以完全用批处理操作,相当于用批处理来生成FTP命令文件,再执行FTP命令文件,执行完之后,删除FTP命令文件。

@echo off
echo open 172.18.30.182>ftp.txt
echo mike>>ftp.txt
echo 123456>>ftp.txt
echo prompt>>ftp.txt
echo lcd i:\ftp_local>>ftp.txt
echo type binary>>ftp.txt
rem FileZilla Server不支持远程文件用-表示所有文件,支持用*表示所有文件
echo mls - info.txt>>ftp.txt
echo get a.ini>>ftp.txt
echo mget 1.ini 2.ini>>ftp.txt
echo put info.txt>>ftp.txt
echo mput aa.ini bb.ini>>ftp.txt
echo quit>>ftp.txt
ftp -s:ftp.txt
del ftp.txt
pause

执行情况:
在这里插入图片描述

2. 自动同步

FTP主要完成同步的工作,而自动则需要使用Windows的定时任务命令行工具schtasks。
FTPSync.bat负责调用FTP命令文件

ftp -i -s:ftpCMD.txt

FTPSyncTask.bat则负责制订定时任务,如每天的8点启动

schtasks /create /tn "FTPSync" /tr “d:\FTPSync.bat" /sc daily /st 08:00:00 

每月、每周、每天、每小时等更多定时任务,请参考:批处理之计划任务at和schtasks


http://chatgpt.dhexx.cn/article/UAZUot1d.shtml

相关文章

十二.deepin文件自动同步阿里云盘

timeshift作用强大,可以备份系统和恢复历史版本,但不够直观,主要是我也没用它恢复过,在deepin论坛看到有人制作了一款工具,可以按文件夹自动同步到阿里云盘,这对于及时把重要数据恢复到其他电脑太有用了。至…

Xp计算机同步时间,windows xp时间不准不能自动同步的解决办法

起因是老妈的电脑上时间老是不准确,每次都慢几个小时,以至于有时做饭都不知道时间,经过检查,初步确认是主板CMOS电池电量不足了,本来也是没什么大不了的事情,反正有手机可以看时间,但是因为老妈…

设置swagger文档自动同步到YApi

SpringBoot项目引入swagger文档后,每次都要手工维护接口到YApi很麻烦,有没有设置自动化同步的办法?操作如下: 进入YApi后添加项目 添加完项目后,点击设置,配置基本项目信息,由于我这边走的是网关…

实现电脑文件自动同步到FTP

在电脑使用的过程中最害怕的就是文件丢失,尤其是办公电脑,里面包含很多公司重要,一旦遗失会造成不可挽回的损失,所以我们通常是要对电脑本地文件进行备份,有的人喜欢备份到网盘,有的人会备份到U盘或者移动硬…

计算机无法自动矫正时间,怎么设置电脑上的时间自动同步进行校正

怎么设置电脑上的时间自动同步进行校正 腾讯视频/爱奇艺/优酷/外卖 充值4折起 今天给大家介绍一下怎么设置电脑上的时间自动同步进行校正的具体操作步骤。 1. 打开电脑,进入桌面,在任务栏的右下角点击时间,如图,弹出时间日期的窗口: 2. 点击窗口中的“更改日期和时间设置”…

提交代码到Gitlab自动同步备份到Gitee

一.明确需求,日常工作中使用的代码管理工具是Gitlab,但是我们需要Gitee也要有一份跟Gitlab代码库中的同样的代码并且Gitlab有新的提交就自动同步到Gitee。 二.入坑前准备工作 ①分别注册gitlab账户和gitee账户 ②需要在gitlab添加一个SSH密钥&#xff…

电脑自动同步服务器时间bat,关于电脑时间自动同步校准方法

据网友反应,电脑操作系统的时间总是不对,经常性的出现电脑时间总是快,还有其他客户可能会遇到电脑时间变回N年前,那么下面学习啦小编就教大家一个超级好用的电脑时间自动同步校准方法。 电脑系统时间总是不对变快 变慢自动同步校准…

linux设置时间自动同步

1.查看和手动修改时间 查看时间 date 修改时间 date -s ‘yyyy-mm-dd hh:mm:ss’ 2.使用ntp服务自动同步网络时间 1.检测是否安装和启动服务 service --status-all2.安装ntp 服务 yum install ntp3.同步时间 ntpdate ntp.api.bz3.设置开机自启 systemctl enable ntpd.s…

Freefilesync自动同步

工作PC的硬盘如果出了问题,就很麻烦了,以前碰到过一次,数据全丢,很是吐血,所以需要定期备份数据。尤其是PC未坏但是已使用多年的时候,这种方式更让人安心。 免费的Freefilesync是个好的选择 1、买块移动硬…

gitee与github双向自动同步的方法

原文网址&#xff1a;gitee与github双向自动同步的方法_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍gitee与github双向自动同步的方法。包括&#xff1a;gitee同步到github和github同步到gitee。 官网网址 仓库镜像管理 &#xff08; Gitee <-> Github 双向同步&a…

gitlab自动同步github

问题描述 实验室在自己的服务器上有一个gitlab&#xff0c;同步起来很方便&#xff1b;另一方面&#xff0c;由于某些原因&#xff0c;本地仓库同步到github失败率很高。因此&#xff0c;希望将本地代码同步到gitlab, 同时由gitlab自动镜像push到github上的私有仓库中&#xf…

Linux如何实现自动文件同步?

一、基础环境 rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步&#xff0c;支持本地复制&#xff0c;或者与其他SSH、rsync主机同步。 本文是利用rsync实现在不同Linux服务器上的文件进行周期同步&#xff0c;有A、B两台服务器&#xff0c…

RSYNC 自动同步文件免密

rsync 免密方式自动同步文件&#xff1a; rsync的客户端方式能够自动同步文件&#xff0c;非常方便&#xff0c;但是它在远程拷贝文件之前提示还需要输入一个密码&#xff0c;要实现脚本自动拷贝&#xff0c;必须要优化掉这个步骤&#xff0c;让rsync以密码文件的方式工作&…

字符串旋转(C#)

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如&#xff0c;输入字符串"abcdefg"和数字2&#xff0c;该函数将返回左旋转两位得到的结果"cdefgab"。 来源&#xff1a;力扣&#xff08…

【关于字符串旋转问题】

题目一&#xff1a; 实现一个函数可以左旋字符串中的k个字符 例如&#xff1a; 字符串“ABCDEF”左旋一个字符得到“BCDEFA” 字符串“ABCDEF”左旋两个字符得到“CDEFAB” 思路&#xff1a; 如果要旋转一个字符&#xff0c;可以先将第一个字符放在临时变量中&#xff0c;在把后…

旋转字符串⭐

文章目录 1. 问题描述2. 问题示例3.代码实现4. 运行结果 总结 1. 问题描述 给定一个字符串&#xff08;以字符数组的形式&#xff09;和一个偏移量&#xff0c;根据偏移量原地从左向右旋转字符串 2. 问题示例 输入 str “abcdefg”,offset 3,输出"efgabcd"输入 …

旋转字符串,判断字符串是否为旋转而来

题目 1、实现一个函数&#xff0c;可以左旋字符串中的k个字符。 ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 2、.判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如&#xff1a; 给定s1 AABCD和s2 BCDAA&#xff0c;返回1 给定s1 abcd 和 s2 ACBD…

旋转字符串(java)

问题描述: 给定两个字符串, s 和 goal。如果在若干次旋转操作之后&#xff0c;s 能变成 goal &#xff0c;那么返回 true 。s 的 旋转操作 就是将 s 最左边的字符移动到最右边。 若 s ‘abcde’&#xff0c;在旋转一次之后结果就是’bcdea’ 。 样例输入&#xff1a; 代码如下…

2021-02-12:如何判断两个字符串是否互为旋转字符串?

2021-02-12&#xff1a;如何判断两个字符串是否互为旋转字符串&#xff1f; 福哥答案2021-02-12&#xff1a; 假设字符串str1是“ABCDE”&#xff0c;字符串str2是“CDEAB”。字符串str2可以拆分成“CDE”和“AB”&#xff0c;可以拼成“ABCDE”。所以str1和str2互为旋转字符…

字符串旋转问题详解

题目名称&#xff1a; 字符串左旋 题目内容&#xff1a; 实现一个函数&#xff0c;可以左旋字符串中的k个字符。 例如&#xff1a; ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB 方法一&#xff1a;暴力求解 这种方法相对比较容易&#xff0c;我们先来看看代码&…