【问题标题】:Is my code broken? Ftp script under windows我的代码坏了吗? windows下的ftp脚本
【发布时间】:2012-05-23 14:48:36
【问题描述】:

我编写了一些脚本,将文件从服务器 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 到本地服务器。

真的很混乱。

【问题讨论】:

    标签: windows ftp batch-file windows-server-2003


    【解决方案1】:

    这可能是防火墙在主动 FTP 模式下拒绝连接的问题,您可以尝试设置被动模式,发出 PASV 命令(QUOTE PASV with Windows ftp.exe),看看这是否能解决问题问题(有关两种不同模式的更多详细信息here)。
    我还建议您设置调试,以便从服务器获取详细信息(添加 DEBUG 命令)。
    如果您不传输文本,请记住也包含 BINARY 命令。

    【讨论】:

    • 如果是windows ftp.exe,可以试试QUOTE PASV
    • 您是否尝试发出 DEBUG 并将输出重定向到文本文件以验证会话的详细信息是什么?这可能有助于诊断。
    • 请检查EDIT,看看有没有提示。
    • 你为什么不尝试简化调试,看看是否正在使用脚本下载文件(将输出重定向到一个空文件夹,这样你就不用怀疑了),其次是启动相同的脚本来自调度程序(如果结果发生变化,可能取决于启动任务的凭据)
    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 2018-12-14
    • 2022-01-08
    相关资源
    最近更新 更多