我编写了一些脚本,这些脚本将文件从服务器 ftp 传输到本地机器。脚本在不同模式下具有不同的行为。
如果我以交互方式运行它,则 ftp 很好:
ftp> mget *abc*.reviewed
200 Type set to A.
200 PORT command successful.
150 Opening ASCII mode data connection for xxx_abc_yyyymmdd.reviewed(506 bytes).
226 Transfer complete.
ftp: 506 bytes received in 0.00Seconds 506000.00Kbytes/sec.
如果我在 windows 任务计划程序中安排它,它只显示以下内容:
ftp> mget *abc*.reviewed
200 Type set to A.
我怀疑后面有错误,但没有日志。我做错了什么?
我的代码示例:
call :Logic > E:\ftp_%yyyymmdd%.log 2>&1
exit /b 0
:Logic
ftp -i -s:C:\App\XXX\bin\ftp_script.txt some.host.net
我将输出写入日志文件,但我不知道错误流是否已成功配置。我可能会丢失一些错误日志。
ftp_script.txt 的内容:
username
password
lcd E:\YYY
cd /XXX/YYY/ZZZ
mget *abc*.reviewed
mget *bcd*.reviewed
mget *cde*.reviewed
bye
进一步的案例研究:
该脚本计划在每天晚上 8 点运行。我今天检查了服务器,发现目标服务器包含我想要的文件,最后修改的属性是下午 6:54。所以文件应该在晚上 8 点出现,并且在昨天的计划中它们不是 ftp。
我假设最后修改的属性等于它被复制(从其他目录)或重命名(文件应该从 .csv 重命名为 .reviewed )的时间。
我在下午 12:40 安排了一个一次性任务来运行脚本,并且文件成功地从目标服务器 ftp 到本地服务器。
这真的很令人困惑。