3

我正在尝试使用 MS DOS ftp 脚本(Windows 7)从 Unix 机器获取一些文件。我是新手,所以我一直在尝试修改一个在线示例。代码如下:

@echo off
SETLOCAL

REM ##################################
REM Change these parameters
set FTP_HOST=host
set FTP_USER=user
set FTP_REMOTE_DIR=/users/myAcc/logFiles
set FTP_REMOTE_FILE=*.log
set FTP_LOCAL_DIR=C:\Temp
set FTP_TRANSFER_MODE=ascii
REM ##################################
set FTP_PASSWD=password

set SCRIPT_FILE=%TEMP%\ftp.txt
(
    echo %FTP_USER%
    echo %FTP_PASSWD%
    echo %FTP_TRANSFER_MODE%
    echo lcd %FTP_LOCAL_DIR%
    echo cd  %FTP_REMOTE_DIR%
    echo prompt
    echo mget %FTP_REMOTE_FILE%
) > %SCRIPT_FILE%

ftp -s:%SCRIPT_FILE% %FTP_HOST%
del %SCRIPT_FILE%

ENDLOCAL

但是,当我运行此命令时,mget命令失败并给出以下输出:

注意:脚本其余部分的输出显示前面的所有步骤都按预期工作。我什至添加了ls命令来验证脚本是否在正确的目录中。

...
ftp> mget *.log
200 Type set to A; form set to N.
mget logFile1_SystemOut_22-01-13.log? mget logFile2_SystemOut_22-01-13.log? mget 
logFile3_SystemOut_22-01-13.log? ftp>

我已经手动重复了完全相同的步骤,它工作正常 - 没有问题,文件已成功传输到 C:\Temp 目录。

我已经检查了许多论坛和其他网站,但我看不出它为什么会这样。关于为什么这在脚本中不起作用的任何指针都会很棒!

谢谢

4

4 回答 4

1

关闭 ftp mget 生成的提示的常用选项是

ftp -i

默认情况下,ftp 会提示mget "wildcard"您在脚本中生成的字符串找到的每个文件。

于 2013-01-23T19:49:26.420 回答
1

我像这样在 Windows 上调用脚本:

ftp -i -s:%SCRIPT_FILE% %FTP_HOST%

这是因为ftp -si:%SCRIPT_FILE% %FTP_HOST%不起作用。

我想这在上是一样的——开关必须分开。

于 2015-06-22T23:05:08.370 回答
0

ftp -i为我工作。

按照@jim mcnamara 的建议在您的脚本中更改ftp -s:%SCRIPT_FILE% %FTP_HOST%for 。ftp -si:%SCRIPT_FILE% %FTP_HOST%

于 2015-05-20T12:06:36.997 回答
0

ftp -i -s:%SCRIPT_FILE% %FTP_HOST%也为我工作。

另一种选择是在调用mget(你这样做)之前在ftp脚本中切换提示,我也在mget -i某处读过。

但请注意:prompt如果之前已关闭,则在 ftp 脚本中将提示重新打开。所以使用ftp -iOR prompt,但不能同时使用!

您可以通过在 mget 之后在 ftp 脚本中回显一些 's 来检查您的脚本是否正常工作y,因此当提示出现时它会回答“是”。

于 2016-10-25T16:41:17.197 回答