‘壹’ 请教高手,用批处理命令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.
‘贰’ 怎样使用批处理来操作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文件自动下载
前几天笔者遇到一个需求,在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来获取这个字符。
最后这个脚本东凑西凑,界面如下:
‘肆’ 批处理怎样在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快速上传到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服务器
rem指定FTP用户名
setftpUser=abc
rem指定FTP密码
setftpPass=1234
rem指定FTP服务器地址
setftpIP=100.10.100.1
(echo.%ftpUser%
echo.%ftpPass%)>ftp.sh
ftp-v-i-s:"ftp.sh"%ftpIP%
‘柒’ 如何在BAT批处理文件中实现FTP登陆
rem例如列出ftp文件,可输入命令ls
@echooff
setftpulr=写ftp地址
setftpuser=写ftp用户名
setftppwd=写ftp密码
setftpport=写ftp端口
echoopen%ftpulr%%ftpport%>openFtp.txt
echo%ftpuser%>>openFtp.txt
echo%ftppwd%>>openFtp.txt
echo输入命令:
set/pvar=
echo输入的是%var%
echo%var%>>openFtp.txt
echobye>>openFtp.txt
echoTransportdata......
ftp-s:openFtp.txt
delopenFtp.txt
pause
‘捌’ 想做一个批处理 将指定文件用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上传完的文件如何改名。有知道的大神告诉一下别太难