@Echo Off Echo open ip_address [port] >ftp.up Echo [username]>>ftp.up Echo [password]>>ftp.up Echo Cd .\ >>ftp.up Echo binary>>ftp.up Echo put "C:\ExAdminAuditLog.txt">>ftp.up Echo bye>>ftp.up FTP -s:ftp.up del ftp.up /q
[port]不填的话就是默认端口号,注意上面的username和password后的>>之间不要有空格,否则用户名和密码就不正确了。
大体上就是将ftp用到的交互式命令写到一个临时文件中,执行完后并删除。如果要调试的话,可以在代码的最后一行加上pause,这样执行完会暂停,能看到执行结果。
代码比较简单,粘贴到一个XXX.bat文件中双击执行就ok了。
帐号:FTP_Admin
密码:Password11
我想将本地D:\User List\User.csv 文件通过执行bat批处理自动上传到FTP中的文件夹User下面
单个文件:
@Echo Off Echo open 10.80.138.16 >ftp.up Echo FTP_Admin >>ftp.up Echo Password11 >>ftp.up Echo Cd .\User >>ftp.up Echo binary>>ftp.up Echo put "D:\User List\User.csv">>ftp.up Echo bye>>ftp.up FTP -s:ftp.up del ftp.up /q Pause
1. 如果我想把\user 这个文件夹里所有的csv文件都上传到ftp中去 要怎么修改? 2. 运行完后cmd窗口就开着了 怎么让它自己关闭掉? 3. 好像这个命令不能多次执行,是不是因为文件已经copy过去了 无法覆盖所导致?
多个文件:
@Echo Off Echo open 192.168.131.65>ftp.up Echo jd08139>>ftp.up Echo jd1058522521>>ftp.up Echo Cd .\User >>ftp.up Echo binary>>ftp.up Echo prompt >>ftp.up Echo lcd "R:\User List">>ftp.up Echo mput "R:\User List\*.*">>ftp.up Echo bye>>ftp.up FTP -s:ftp.up del ftp.up /q
set y=%date:~0,4% 的理解
@Echo Off set y=%date:~0,4% set m=%date:~5,2% set d=%date:~8,2% set localPath=D:\Mastercom\426d59a970e64545829648277267272a_%y%-%m%-%d%.csv set ftpip=192.168.1.61 set username=ftp set password=Aa123456 set ftpPath=.\ZHNOPPT Echo open %ftpip% >ftp.up Echo %username%>>ftp.up Echo %password%>>ftp.up Echo Cd %ftpPath% >>ftp.up Echo binary>>ftp.up Echo put %localPath%>>ftp.up Echo bye>>ftp.up FTP -s:ftp.up del ftp.up /q : Pause
上面的这个是终极版的,因为我上传的文件需要做一个定时任务,每周执行一次,每次上传当天的文件。
所以代码中
set y=%date:~0,4% set m=%date:~5,2% set d=%date:~8,2% set localPath=D:\Mastercom\426d59a970e64545829648277267272a_%y%-%m%-%d%.csv
是拼接指定的文件。y、m、d是获取当天的年月日。不需要这个功能的同学可以直接忽略掉。
set ftpip=192.168.1.61 set username=ftp set password=Aa123456 set ftpPath=.\ZHNOPPT
上面这部分是配置ftp的ip、端口、登录名,密码。以及存放到ftp服务器是路径。
其实也可以不用这样配置,直接替换掉下面的这些变量,但是提取出来感觉方便很多,容易改。下面的代码基本不用改。
Echo open %ftpip% >ftp.up Echo %username%>>ftp.up Echo %password%>>ftp.up Echo Cd %ftpPath% >>ftp.up Echo binary>>ftp.up Echo put %localPath%>>ftp.up Echo bye>>ftp.up FTP -s:ftp.up del ftp.up /q : Pause
上面的参数配置好了,这部分的代码不用改基本上,如果改了参数名,把对应的参数名改一下就可以了。
这段代码的意思是:
连接ftp服务器 输入用户名 输入密码 切换到ftp服务器指定的目录 启动一个上传任务 将这个指定需要上传的文件加入到这个上传任务中 执行这个任务 销毁这个任务 结束
最后的Pause命令是在调试中使用的,双击bat脚本后,运行结果可以在控制台中看到。如果想要运行结束后控制台直接关闭,可以把这个命令注释掉。
bat 脚本中注释的符号为
: Pause 或者 rem Pause