批处理文件将文件从一个 FTP 文件夹移动到同一 FTP 中的另一个文件夹?

L.N*_*ell 1 ftp cmd file batch-file transfer

大家早上好,

我有一个任务,需要自动化一个流程,从 FTP 站点下载文件,用 SQL 处理文件,然后将 FTP 站点上的文件移动到同一 FTP 站点上的另一个文件夹。

前两部分我已经完成,但将 FTP 上的文件移动到同一 FTP 上的另一个文件夹的部分让我感到困惑。

有人可以提供一些建议吗?

这就是我目前拥有的:

@Echo Off
Set _FTPServerName=SERVER HERE
Set _UserName=LOGIN HERE
Set _Password=PASSWORD HERE
Set _RemoteFolder=FILES FROM
Set _NewRemoteFolder=FILES TO
Set _Filename=*.*
Set _ScriptFile=ftp1

:: Create script
"%_ScriptFile%" Echo open %_FTPServerName%
"%_ScriptFile%" Echo %_UserName%
"%_ScriptFile%" Echo %_Password%
"%_ScriptFile%" Echo cd %_RemoteFolder%
"%_ScriptFile%" prompt

:: Run script
ftp -s:"%_ScriptFile%"
Del "%_ScriptFile%"
Run Code Online (Sandbox Code Playgroud)

如果您还有其他问题,请告诉我!

Mar*_*ryl 5

Windows命令行客户端中有rename命令:ftp.exe

rename oldname newname
Run Code Online (Sandbox Code Playgroud)

所以在你的特定批处理文件中:

"%_ScriptFile%" echo rename file.txt %_NewRemoteFolder%/file.txt
Run Code Online (Sandbox Code Playgroud)

尽管看到_Filename=*.*您的问题,但实际上您似乎想移动所有文件。这对于 Windows 来说是不可能的ftp.exe,至少不容易。该rename命令不支持通配符。

您必须根据下载的文件列表动态生成脚本文件,并rename为每个文件使用单独的命令。


或者使用在重命名/移动时支持通配符的不同命令行 FTP 客户端。

例如,使用WinSCP 脚本,批处理文件将类似于:

winscp.com /log=winscp.log /command ^
    "open ftp://username:password@example.com" ^
    "cd %_RemoteFolder%" ^
    "mv *.* %_NewRemoteFolder%/" ^
    "exit"
Run Code Online (Sandbox Code Playgroud)

详情请参阅:

(我是WinSCP的作者)

  • 嘿@Martin Prikryl 非常感谢您的回复!我只是想说,我使用了您的另一篇文章,使用 WinSCP 来帮助完成我正在测试的另一件事,它非常出色,非常感谢! (2认同)