当前位置:首页 » 文件管理 » 批处理命令ftp

批处理命令ftp

发布时间: 2023-08-02 14:09:29

‘壹’ 批处理怎样在WINDOWS 资源管理器中打开ftp

需要做一个批处理,一个ftp脚本,放到一个目录下,双击startftp.bat使用。1、第一个保存为startftp.batftp -s:ftp.ftp2、第二个保存为ftp.ftp,具体代码根据实际情况而定,第一行open后面是ftp地址,第二行user后面是用户名,第三行填密码,之后就是需要使用的ftp命令了。open 10.0.0.1user usernamepassword get * bye

‘贰’ 怎样使用批处理来操作FTP命令

将文件传送到运行FTP服务器服务(经常称为后台程序)的计算机以及将文件从该计算机
传出。可以交互使用Ftp。

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:sendsockbuf覆盖默认的SO_SNDBUF大小8192。
-r:recvsockbuf覆盖默认的SO_RCVBUF大小8192。
-b:asynccount覆盖默认的异步计数3
-w:windowsize覆盖默认的传输缓冲区大小65535。
host指定主机名称或要连接到的远程主机
的IP地址。

注意:
-mget和mput命令将y/n/q视为yes/no/quit。
-使用Ctrl-C中止命令。

‘叁’ 批处理命令从ftp上下载子目录中文件

先建一个ftp命令文件:如
get.ftp
open
192.168.0.2
FTPUSERNAME
#账号
FTPPASSWORD
#密码
get
/SharedFile/Log
/1.txt
bye
然后再建批处理文件
ftp
-s:d:\test\get.ftp

‘肆’ 请问自动上传特定目录到FTP服务器的BAT批处理怎样写

您可以使用cmd环境的rar,对所有B00n文件夹下的C003进行整体打包,然后上传各个打包的rar文件,我假定您AAA目录下所有B大头的目录都有C003子目录,并且都要备份上传。这个rar工具可以在winrar的安装目录下找到,拷贝到AAA目录下就行了。
按您的描述,增量备份用批处理可能会比较麻烦,我下面帮您写的是全量备份的,不过rar做的压缩包会保持文件的完整目录结构。
把下面的命令存为批处理文件:my_ftp_put_C003.bat,这个bat文件要放在AAA目录下。
@echo off
@set d=E:\AAA
@cd /d %d%
rem 下面三行是ftp的IP、用户名、密码,请自行替换
@set ftpip=127.0.0.1
@set ftpusr=username
@set ftppwd=password
@for /f "delims=" %%i in ('dir B* /ad /b') do @rar a AAA_%%i_C003.rar %%~fi\C003
@echo open %ftpip%>%d%\tmp.ftp
@echo %ftpusr%>>%d%\tmp.ftp
@echo %ftppwd%>>%d%\tmp.ftp
@for /f "delims=" %%i in ('dir AAA_B*.rar /b') do @echo put %%i >>%d%\tmp.ftp
@echo quit >>%d%\tmp.ftp
@ping -n 2 127.0.0.1 >nul
@ftp -s:%d%\tmp.ftp
@del %d%\tmp.ftp
上面有几行,在注释后面是ftp的ip地址、用户名、密码,您要改成您自己的。
以上批处理我已经在Win10+ftp的环境下测试过了,希望对您有帮助。

‘伍’ 用批处理上传文件到ftp目录下的实现方法

为了快速将项目中开发的补丁程序通过ftp快速上传到linux下,感觉每次用flashFxp等工具麻烦),写了个简单的批处理,与大家分享一下。
将以下代码保存为.bat格式的文件,每次将要上传的补丁保存在规定的本地目录中,只要双击执行此文件就能上传到你的指定目录上。
说明:
192.168.1.1
ftp
ip
地址
21
端口
username
用户名
password
密码
temp.txt
保存ftp信息的临时文件,上传后删除
C:\Documents
and
Settings\user\桌面\patch\upload_dir\1.zip
上传upload_dir目录下的zip文件
test/temp%date%.rar
上传到用户目录下并且以“temp+当前日期”
对上传文件重命名
最后是删除本地文件
复制代码
代码如下:
@echo
off
echo
open
192.168.1.1
21
>>
temp.txt
echo
user
username
password>>
temp.txt
echo
bin
>>
temp.txt
echo
put
"C:\Documents
and
Settings\user\桌面\patch\upload_dir\1.rar"
"test/temp%date%.rar"
>>
temp.txt
echo
bye
>>
temp.txt
ftp
-n
-s:"temp.txt"
del
/q
C:\Documents
and
Settings\user\桌面\patch\upload_dir\1.rar
del
/q
temp.txt
pause
以上内容是小编给大家介绍的用批处理上传文件到ftp目录下的实现方法,希望对大家有所帮助!

‘陆’ 批处理来完成FTP文件自动下载

    前几天笔者遇到一个需求,在windows平台下使用ftp来远程获取交换机扮毕漏的配置文件。鉴于每一次都需要在命令行里面手动输入,过程繁琐,于是想着使用脚本来完成这个重复性的工作,实现自动化。python的ftplib库也可以解决这个问题,但是笔者未来和其他bat脚本揉在一起,直接windows平台下使用批处理bat来完成。

    ftp -s可以指定包含ftp命令的文本文件,ftp启动后这些命令将自动运行。

主批处理文件:ftp_main.bat 

ftp命令批处理文件:ftp_task.bat,文件放置于D盘下。

    除了FTP之外,date修数敏改电脑日期,time修改电脑厅烂时间,echo ^G测试电脑声音。注意,“^G”是在命令行中使用ctrl + g输入的,可以使用echo ^G > test.txt来获取这个字符。

    最后这个脚本东凑西凑,界面如下:

‘柒’ 请教高手,用批处理命令FTP自动下载文件。

① 如果我理解没错,远端目录,最深层的那个子目录(名称是日期)的那个,每天都是变的;你要下载的是里面的文件(不含子目录);文件下载到本地E:dzyl下,而且目录也是按服务器上的日期创建。

② 批处理固定每天运行,从服务器前一天的目录下载文件。


如果理解正确,那么下面的代码可以实现(已测试过),ip地址你需要修改!你的操作系统如果是英文,也需呀修改(具体看脚本中的提示)

@echooff&
set"ftp_site=19.6.5.34"
set"ftp_id=pracq"
set"ftp_pwd=123456"
set"ftp_remote_dir=/ftp/bos/at/pracq/"
set"ftp_local_dir=E:dzyl"
:100
set"ftpcmd={{%random%}}.ftp"
ifexist%ftpcmd%goto100

::英文系统用下面这个,把下面一行中的::去除
::set"today=%date:~6,4%%date:~0,2%%date:~3,2%"
::中文系统用下面这个,如果是英文,在下面一行句首添加::
set"today=%date:~0,4%%date:~5,2%%date:~8,2%"

settoday=!today:~0,4!-!today:~4,2!-!today:~-2!
call:Date2Day!today!1Yesterday
setftp_remote_dir=!ftp_remote_dir!!yesterday!
>%ftpcmd%echoopen!ftp_site!
>>%ftpcmd%echo!ftp_id!
>>%ftpcmd%echo!ftp_pwd!
>>%ftpcmd%echocd!ftp_remote_dir!
>>%ftpcmd%echobye
for/f%%iin('ftp-s:%ftpcmd%')doif{%%i}=={550}(
!
gotoend
)
setftp_local_dir=!ftp_local_dir!!yesterday!
md!ftp_local_dir!1>nul2>&1
ifnotexist!ftp_local_dir!(
!
gotoend
)

>%ftpcmd%echoopen!ftp_site!
>>%ftpcmd%echo!ftp_id!
>>%ftpcmd%echo!ftp_pwd!
>>%ftpcmd%echocd!ftp_remote_dir!
>>%ftpcmd%echolcd!ftp_local_dir!
>>%ftpcmd%echobinary
>>%ftpcmd%echopromptn
>>%ftpcmd%echomget*.*
>>%ftpcmd%echobye
set/acount=0
for/f%%iin('ftp-s:%ftpcmd%')do(
if{%%i}=={226}set/acount=!count%+1
)
if!count!gtr0(
echoDone.!count!file^(s^)downloaded.
)else(
echoNofilehasbeendownloaded.
)
gotoend

:Date2Day
::call:Date2Day2007-11-122Day
@echooff&setlocal
for/f"tokens=1-3delims=/-:,"%%ain('echo/%~1')do(
set/ayy=%%a,mm=100%%b%%100,dd=100%%c%%100
)
set/az=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set/aj=j/5+dd+y*365+y/4-y/100+y/400-2472633
set/ai=j-%~2,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set/ad=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set/add=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if%mm%LSS10setmm=0%mm%)&(if%dd%LSS10setdd=0%dd%)
endlocal&set%~3=%yy%%f%%mm%%f%%dd%&
goto:eof

:end
ifexist%ftpcmd%(typenul>%ftpcmd%&&del/f/q%ftpcmd%1>nul2>&1)
endlocal&@echoon

测试运行结果:

Done.5file(s)downloaded.

‘捌’ Bat脚本处理ftp超强案例分析

前言 公司有几百台windows服务器 每次程序更新 如果是一台台拷数据 只怕安排十个人 一天都不一定做得完 所以就必须研究个全自动更新方案来 于是就想到了FTP 做个主FTP站 在几百台客户机上启动BAT脚本 每 秒检测一次 如果主站有更新程序 就自动下载更新 几分钟内 上 台windows服务器 都可以全自动更新程序完毕 相当实用 现把当初研究BAT的脚本思路贴出来 希望对大批量运维人员一个方向 当然 批量更新服务器 每个公司有它自己的解决办法 这个BAT的方式不是最优的 可以用shell 可以用perl 也可以用python等脚本解决 一 FTP命令说明 在windows系统中因为FTP是一个程序 如果在bat脚本中直接调用FTP的命令 在执行时总会弹出命令行窗口 循环在>FTP光标这 所以要换种方式 利用 S:filename 更多的命令请输入 h查看 FTP登录成功后 需要下载远程单个文件时 使用get命令 如果下载多个文件时 用mget 它支持通配符 在使用mget时 需要对每一个文件都进行选择Y/N 如果想不交互的下载全部的文件 可以输入一次prompt命令关闭交互方式 Mput和mget命令要注意两个问题 Ⅰ 不能对目标文件指定命字 在命令行上所有的文件都视做源文件 Ⅱ mput mget两个命令不能对目录进行上传与下载 只能对文件 Ⅲ Prompt 每次执行一个这个命令 就在on off之间循环 ftp脚本开始时 prompt默认为on 所以一般在上传 下载文件时 执行一次prompt 把交互式的on关掉 变为off 文件的传输方式 Binary 二进制传输 Ascii ascII传输 在FTP文件传输过程中 ASCII传输HTML和文本编写的文件 而二进制码传输可以传送文本和非文本(执行文件 压缩文件 图片等) 具有通用性 二进制码传输速度比ASCII传输要快 所以在建立bat脚本时 一般输入bin命令 启用二进制传输 如果用ASCII模式传输非文本文件 可能会显示一堆乱码 如果是上传一些CGI脚本 有可能将无法运行这类脚本 而在浏览器上看到server error的错误 Ascii和binary模式的区别是回车换行的处理 binary模式不对数据进行任何处理 asci模式将回车换行转换为本机的回车字符 比如Unix下是 Windows下是 Mac下是 unix系统下行结束符是一个字节 即十六进制的 A 而ms的系统是两个字节 即十六进制的 D A 所以当你用ascii方式从unix的ftp server下载文件时(不管是二进制或者文本文件 redhat的 vsftp默认是binary ascii默认关闭) 每检测到一个字节是 A 就会自动插入一个 D 所以如果你的文件是二进制文件比如可执行文件 压缩包什么的 就肯定不能用了 如果你的文件就是unix下的文本文件 你用 ascii模式是正确的 要是误用了binary模式 你在windows上看这个文件是没有换行的 里面是一个个的黑方块 在用FTP客户端传输文件时 因为这些软件都做得比较智能化 它可以根据后缀 自动启用传输模式 所以不用担心出问题 二 实例求证 环境说明 上有一FTP服务器端(windows版) FTP用户名为lgh 密码为 该用户的根目录为D lgh 里面文件见下图 sql rar是sql bat的压缩文件 大家注意看图 我等下会在后面的实例中引用这个文件 把mget get prompt bin ascii等ftp命令诠释得一清二白

实例一 直接BAT调用FTP命令 ftpbat bat内容 (***大家建立bat文件不要命名为ftp bat 执行时会有问题***)

复制代码 代码如下:

ftp open lgh get sql rar bye

从图上的结果看 bat脚本直接调用xp的FTP命令是不行的 执行时H:>ftp会一直死循环 我这里的XP系统是SP 的 其它版本的 我没有作测试 如果有不同 欢迎大家留言告之 实例二 用put get上传 下载单个文件 把XP机器上H:js目录下文件flower zip上传到FTP服务器 把FTP服务器中的sql rar文件下载到XP机器上的H:JS目录 ftp get put bat内容如下

复制代码 代码如下:

@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo get sql rar >> %ftpfilename% echo put flower zip >> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%

我们来看看结果 见下面两张图 从XP系统上看 H盘的JS目录 多了个sql rar FTP服务器上的根目录多了个flower zip 这说明 刚才的脚本完成正常的执行了 达到了预期的目的

实例三 用put get上传 下载多个文件 在XP机器上把flower zip复制一次 改名为flower zip 在XP机器上把把第二次实例下载的sql rar文件删除 以免影响到本次操作 在FTP服务器上把第二次实例上传的flower zip文件删除 以免影响到本次操作 把XP机器上H:js目录下文件flower zip 和flower zip上传到FTP服务器 ftp get put many bat内容如下

复制代码 代码如下:

@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo put flower zip flower zip>> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%

到FTP服务器上查看根目录 看flower zip与flower zip是否已成功上传 从图上看 只成功上传了flower zip文件

刚那个ftp get put many bat脚本里echo put flower zip flower zip>> %ftpfilename% flower zip是传输的最后一个文件 是不是用put时 意味着bat在处理上传时 只认最后一个文件呢 我们再多加个文件flower zip 来验证

在XP机器上把flower zip复制一次 改名为flower zip在FTP服务器上把第二次实例上传的flower zip文件删除 以免影响到本次操作

ftp get put many bat内容修改如下

复制代码 代码如下:

@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo put flower zip flower zip flower zip>> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%

结果 还是只成功上传了flower zip 因bat双击时 执行过程会一闪而过 我们看不到执行过程 到命令行去执行下 看到底出了什么问题

命令行 执行ftp get put many bat脚本 从执行情况看 flower zip三个文件都是put的 但在传输时 却只传了flower zip 真不解 有知道的朋友吗?给点方向

再换个方式 用通配符* 试试 ftp get put many bat内容修改如下

复制代码 代码如下:

@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo put flower* zip >> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%

在FTP服务器上把上传的flower文件全部删除 以免影响到本次操作执行ftp get put many bat 结果只有flower zip文件上传成功了 呵 flower zip文件 怎么都不能上传 ???

其实用put传输多个文件 完全可用重复的方式取代 比如 ftp get put many bat内容修改如下

复制代码 代码如下:

@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo put flower zip >> %ftpfilename% echo put flower zip >> %ftpfilename% echo put flower zip >> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%

实例四 用mput mget上传 下载多个文件 在FTP服务器上删除有关flower的文件

ftp mget mput many bat内容如下:

复制代码 代码如下:

@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo mput flower zip flower zip flower zip>> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%

双击ftp mget mput many bat后 发现系统弹出一窗口后 就卡住了 停止不前

原因是用了mput命令 但没有用Prompt关闭交互

ftp mget mput many bat内容修改如下:

复制代码 代码如下:

@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo Prompt >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo mput flower zip flower zip flower zip>> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%

再次执行ftp mget mput many bat 结果见下图

用通配符*试试在FTP服务器上删除有关flower的文件ftp mget mput many bat内容修改如下:

复制代码 代码如下:

@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo Prompt >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo mput flower* zip >> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%

照样成功上传有关flower* zip文件 因为结果与上一步是一样的 所以就不抓图了 实例五 用ascii在windows系统间传输非文本文件 把XP电脑上的rmb jpg通过ascii传到FTP服务器的根目录

ftp get ascii bat内容修改如下:

复制代码 代码如下:

@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo lgh >> %ftpfilename% echo >> %ftpfilename% echo ascii >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo put rmb jpg>> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%

执行ftp get ascii bat后 发现rmb jpg可以正常上传 并且可以正常打开 那 这个现象与前面所以的ascii不能传输非文本东西有出入 这是怎么回会事呢 这是因为 FTP服务器是WINDOWS系统 XP电脑上的bat脚本也是在windows系统上运行的 所以bat在windows系统里用FTP传输文件 不管是用ascii 还是用binary 都是可以的 接下来我们再做一个实验 FTP服务器选centos 再测下ascii传输非文本文件问题 实例六 用ascii在windows系统与linux系统间传输非文本文件 在RHEL 位系统上建立一vsftpd服务器 上面说过redhat默认启用二进制传输 关闭了ascii码传输 所以我们还要修改一下vsftpd的配置文件 修改/etc/vsftpd/nf文件 允许客户端进行ascii传输 并重启vsftpd

把rmb jpg放到FTP服务器 大家注意下H:js目录下只有ftp getascii bat文件

ftp getascii bat文件内容修改如下

复制代码 代码如下:

@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo ftp >> %ftpfilename% echo redhat >> %ftpfilename% echo asc >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo get rmb jpg >> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%

执行ftp getascii bat 看结果 rmb jpg文件有下载到XP电脑里 双击这个文件 发现图像乱码 文件被破坏了 都是ascii码传输惹的祸

换bin传输 测试一下在XP电脑上删除rmb jpg文件 再双击ftp getascii bat文件 去从LINUX的FTP服务器下载一个rmb jpg文件

修改ftp getascii bat 把ascii改给二进制传输

复制代码 代码如下:

@echo off set ftpfilename=autoftp cfg echo open > %ftpfilename% echo ftp >> %ftpfilename% echo redhat >> %ftpfilename% echo bin >> %ftpfilename% echo lcd h:js >> %ftpfilename% echo get rmb jpg >> %ftpfilename% echo bye >> %ftpfilename% ftp s: %ftpfilename% del %ftpfilename%

结果 文件正常下载 图像也显示正常 lishixin/Article/program/qrs/201401/30223

‘玖’ 想做一个批处理 将指定文件用FTP上传

时间晚了好久,不知道到还有用没,希望有用的可以拿来参考

目的监控路径下面文件,上传到指定FTP。上传完毕后文件备份。

方法个人运用两个bat第一个监控,第二个FTP上传

1.监控。放到你要监控的文件夹路径下面建立start.bat 下面是我放的内容。

@echo off

:memu

for /f "delims=" %%a in ('dir /a-d/b *.zip') do (

if not [%%a]==[] (

echo %time%发现:%%a

)

)

start "" Q:BCPbackupftpceshiftpuploud.bat

ping 127.0.1 -n 60 >nul

goto memu

在段中,你要监控的文件类型就是*.zip。可以改成你需要的比如*.jpg等

删除临时文件,退出

然后1在监控,有文件后启动FTP上传完成后退出

这里我没有找到决绝办法的是FTP上传完的文件如何改名。有知道的大神告诉一下别太难

热点内容
滑板鞋脚本视频 发布:2025-02-02 09:48:54 浏览:432
群晖怎么玩安卓模拟器 发布:2025-02-02 09:45:23 浏览:557
三星安卓12彩蛋怎么玩 发布:2025-02-02 09:44:39 浏览:743
电脑显示连接服务器错误 发布:2025-02-02 09:24:10 浏览:537
瑞芯微开发板编译 发布:2025-02-02 09:22:54 浏览:146
linux虚拟机用gcc编译时显示错误 发布:2025-02-02 09:14:01 浏览:235
java驼峰 发布:2025-02-02 09:13:26 浏览:651
魔兽脚本怎么用 发布:2025-02-02 09:10:28 浏览:538
linuxadobe 发布:2025-02-02 09:09:43 浏览:212
sql2000数据库连接 发布:2025-02-02 09:09:43 浏览:726