FTP bat 文件中的命令行脚本在 Windows 8.1 中不起作用

FTP command-line scripting in bat file doesn't work in Windows 8.1

下面的脚本在 Windows 7 中完美地运行 FTP 下载:

echo user MyUSN> ftpcmd.dat
echo MyPWD>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo cd FTP-Incoming/DB_Backups>> ftpcmd.dat
::echo get %1>> ftpcmd.dat
echo get %1 C:\Database\Backups\%1>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat www.fit-track.net
del ftpcmd.dat

但在 Windows 8.1 中它失败了:

C:\windows\system32>ftp -n -s:ftpcmd.dat www.myserver.com
Connected to myserver.com.
220 Microsoft FTP Service
ftp> user MyUSN
331 Password required for MyUSN.

230 User logged in.
ftp> bin
200 Type set to I.
ftp> cd FTP-Incoming/DB_Backups
250 CWD command successful.
ftp> get  C:\Database\Backups\
200 PORT command successful.
550 The parameter is incorrect.
ftp> quit
221 Goodbye.

这是许多网站上显示的 well-documented approach

为什么这在 Windows 8.1 中会失败,我该如何让它工作?

您在调用批处理文件时显然没有提供参数。

%1 解析为空字符串。

最终而不是正确

get file.txt C:\Database\Backups\file.txt

你打电话给

get  C:\Database\Backups\

语法错误,因为本地路径用于远程路径。

服务器正确地拒绝了命令。