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)
如果您还有其他问题,请告诉我!
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的作者)