如何使用批处理脚本将文件上传到 FTP 服务器?

如何使用批处理脚本将文件上传到 FTP 服务器?

我创建了一个名为的批处理文件FTP_automation.bat,其中包含以下代码。

SET MyPath=E\PGP\test_pg
ftp
open 142.245.30.165 21
TESTA9MS
test11
binary
put %MyPath%
quit
Pause

当我运行时FTP_automation.bat,它没有上传我传递参数的文件。

脚本ftp在批处理文件中提到之后停止,并且它没有连接到我在批处理文件中传递的 IP 地址和端口号。

如果我手动输入这些命令,它就可以完美运行。我应该对此代码进行哪些修正?

答案1

您必须将ftp命令放入单独的文件中。您不能将您在终端上输入的行放入.bat文件中并期望其行为相同。该.bat文件只能包含 Windows 命令。当您ftp从批处理文件运行命令时,它会等待其命令。它不知道该.bat文件,因此无法从那里读取命令。

因此,请将您的命令放入单独的文本文件中(例如ftp.txt)。

open 142.245.30.165 21
TESTA9MS
test11
binary
put E\PGP\test_pg
quit

并从文件运行它,.bat如下所示:

ftp -s:ftp.txt
pause

如果您确实需要使用动态文件名(来自环境变量),则需要动态创建文本文件。不ftp支持变量。


如果您使用更好的 FTP 客户端,您可能既可以使用批处理文件中的命令,又可以使用环境变量。

例如温SCP

set MyPath=E\PGP\test_pg

winscp.com /command ^
    "open ftp://TESTA9MS:[email protected]" ^
    "put ""%MyPath%""" ^
    "exit"

pause

有关使用 WinSCP 编写脚本的介绍,请参阅:
https://winscp.net/eng/docs/guide_automation

还有指南将 Windows FTP 脚本转换为 WinSCP 脚本. 你甚至可以有 WinSCP GUI生成批处理文件为你。

(我是 WinSCP 的作者)

相关内容