![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 09:55 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 有关ftp下载、上传的批处理编写经验 |
| 可打印版本 1,298 / 1 |
| 第1楼 exzzz | 发表于 2010-04-15 12:20 |
| 初级用户 发帖 167 积分 194 | |
|
有关ftp下载、上传的批处理编写经验 最近看到很多人问ftp相关的问题,正好几年前我写过一个ftp上传下载的脚本,就简单的总结一下ftp批处理的几点经验,希望能对新手有所帮助
1、如何在批处理中调用ftp? 将你要在ftp中操作的命令输出到某个txt文件,然后用ftp -s命令运行该脚本 首先 echo todo1>xxx.txt echo todo2>>xxx.txt echo todo3>>xxx.txt 然后使用 ftp -s:xxx.txt 就可以执行了 2、ftp下支持的命令有哪些?常用的又有哪些? 支持的命令请看如下输出 C:\Users\Administrator>ftp ftp> help 最常用的命令有: ! 临时切换到cmd下执行某个外部命令,执行后返回ftp命令行 open XXX.XXX.XXX.XXX 连接到某个ftp服务器IP user/pwd 切换用户名/密码(pwd在serv-u下貌似没有效果),一般open后直接依序输入用户名密码即可,但是实际测试,在批处理中生成txt再用ftp -s的话,密码后需要加多个空格,否则可能服务器无法继续下一步。(ftp服务端是serv-u) cd 在服务器端切换目录(ftp服务器端保存文件的目录),即远端目录(以下简称远端) lcd 指定本地目录(本地保存文件的目录),即本地目录(以下简称本地) ascii/binary 使用ascii或binary传输模式,分别主要用于文本/程序文件,一般情况下不需修改,如果下载的程序出错,尝试用bin传输 delete 删除远端的文件 dir/ls 列出远端文件的目录 put 用法是put xxx 将本地lcd指定目录中的xxx文件上传到远端cd指定的目录 get 用法是get xxx 将远端的xxx文件下载到本地目录 mdelete/mdir/mget 想象成对应命令的 XXX * 版本吧,我没用过 mkdir 在远端创建目录 prompt 修改提示符(没用过,应该是这样) rename 远端更改文件名 rmdir 远端删除文件夹 bye 断开连接 3、ftp手动操作的步骤 ftp :运行ftp命令 open 58.61.XXX.XXX :链接到ftp服务器 username :用户名 password :密码 hash :忘记干嘛的了。。。 bin :二进制传输文件,我的是个exe程序 cd bak :远端目录切换到 .\bak lcd e:\bak :本地目录切换到 e:\bak ls . e:\bak\filelist.txt :读取远端目录.\bak下的文件列表并输出到本地文件 e:\bak\filelist.txt quit :断开连接,退出ftp 4、使用脚本控制ftp 将例子3中的每一行前面加上echo 后面加上>>job.txt 然后在最后一行写上 ftp -s:job.txt 并将所有行保存为 XXX.bat ,运行就可以自动执行这些操作了。 5、如何登陆服务器并下载最新版本的程序? 这里提供最简单的一种构想,即远端目录下所有文件,都以 XXXX20100312.rar 之类的格式保存,那么只需要修改日期,默认是按照日期先后排列的,那么最后一个文件,就是最新的了, 所以你可以先用例子3生成 e:\bak\filelist.txt 文件,里面最后一行,就是最新的版本的文件名了,在获取到 filelist.txt之后 for /f %%a in (filelist.txt) do set newver=%%a 即可将 newver 变量设置为最后那行文件名,然后再新建一个jobtodo.txt,内容跟job.txt 完全一样,只是将“ls . e:\bak\filelist.txt”替换成 get %newver%,那么就可以下载到你所需要的版本了 附录程序如下: xxx.bat 内容 在运行xxx.bat之后,可以看到生成了e:\bak\filelist.txt这个文件,然后运行下面的yyy.bat,就能在e:\bak下面找到你要的文件了 yyy.bat 的内容 当然,你把以上两段的内容写在一个bat里面,效果是一样的,我分开写只是为了让你明白两个文件内容差异很小,完全可以做成一段,在关键的几个位置加多一个 ! if 命令,看是否 exist 某个文件 的判断就可以了极大的缩小代码尺寸了。 [ Last edited by exzzz on 2010-4-15 at 12:56 ] |
|
| 第2楼 HAT | 发表于 2010-04-15 18:25 |
| 版主 发帖 5,017 积分 9,023 | |
|
还有下载整个FTP目录、上传本地整个目录、下载指定日期之前的文件、下载几分钟之前的文件等等。
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |