要实现的功能: 每天要从ftp server 获取以当天日期为文件名的文件.如 20100101.txt,
方法:
1.先写好一个get file的模板,将要get的文件名用一个特定的字符串标识出来
2.每次操作前先copy一下
3.使用字符串替换命令将这个copy出来的临时文件中的字符串替换成要get的文件名
4.使用 ftp -s:filename 方式get file
5.删除copy的临时文件
实现:
1.ftp文件可以这样写 (test.ftp)
open ftpserver
username
password
lcd ./data (注: 或者使用绝对路径 d:/data)
bin
prompt
hash
mget FTPFILE (注: 变量,用于替换为指定的文件名)
bye
2.在.bat文件中这样写:
@echo off&setlocal enabledelayedexpansion
set filename=%date:~6,4%%date:~0,2%%date:~3,2% .txt
copy test.ftp test_tmp.ftp
for /f "tokens=1 delims=" %%i in (test_tmp.ftp) do (
set var=%%i
set "var=!var:FTPFILE=%filename%!" (注:替换)
echo !var!>>test_tmp2.ftp (注:重定向)
)
move /Y test_tmp2.ftp test_tmp.ftp
ftp -s:test_tmp.ftp
del test_tmp.ftp
说明: 对于运行中的值,使用 !变量!, 而不能用 %变量% ; !变量!是使用了扩展符号,所以必须启用setlocal enabledelayedexpansion,否则无效.