我创建了一个名为的批处理文件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 的作者)