我想创建一个批处理文件,包括以下功能:
到目前为止,我还没有对批处理文件做过那么多,所以如果你能帮助我会很棒。我知道有ftp
命令,我知道如何连接(ftp open
),但遗憾的是我不知道如何每隔15分钟从那里复制这些文件。
非常感谢你的帮助!
答案 0 :(得分:3)
要从批处理文件编程ftp,请参阅http://support.microsoft.com/kb/96269。你需要像这样调用ftp
ftp -i -s:ftpcommands.txt
其中ftpcommands.txt看起来像这样:
open ftp.myftpsite.com
username
password
bin
cd out
mget *
del *
bye
要每15分钟运行一次,请参阅其他回复(at
或Command Scheduler)。
(-i
参数用于关闭交互式提示 - 另一种方法是在{{{{}}之前向命令文本文件添加prompt off
命令1}}。如果没有这个,mget
将停止并要求您在获取每个文件之前确认。[感谢Adriano指出这一点!]
答案 1 :(得分:1)
accepted answer by @AAT建议使用Windows内置ftp.exe
命令行客户端。虽然这可以工作,但更常见的是它不会,因为这个客户端只支持FTP主动模式,这与当今无处不在的防火墙和NAT不能很好地协同工作。它也不支持加密的FTPS(FTP over TLS / SSL)。
如果您遇到上述问题,则需要使用第三方FTP客户端。他们中的大多数都支持被动模式和加密。
例如,使用WinSCP FTP client,您可以使用以下批处理文件(.bat
):
WinSCP.com /command ^
"open ftp://username:password@ftp.example.com/" ^
"get /out/* c:\local\path\" ^
"exit"
如果您已有ftp.exe
脚本,则可以找到converting it to WinSCP script的指南。
有关计划部分,请参阅guide to scheduling transfers to FTP server。
(我是WinSCP的作者)
答案 2 :(得分:0)
Windows具有at实用程序以及Windows task scheduler。任何一个都可以按指定的时间间隔运行程序。
答案 3 :(得分:0)
仅使用一(1)个.bat文件脚本。在临时文件中创建FTP脚本,运行它,然后删除临时文件。
SET "FTPFILE=%TEMP%\myftpscript_%RANDOM%.txt"
ECHO>>"%FTPFILE%" open ftp.myftpsite.com
ECHO>>"%FTPFILE%" username
ECHO>>"%FTPFILE%" password
ECHO>>"%FTPFILE%" bin
ECHO>>"%FTPFILE%" cd out
ECHO>>"%FTPFILE%" mget *
ECHO>>"%FTPFILE%" del *
ECHO>>"%FTPFILE%" bye
ftp -i -s:"%FTPFILE%"
IF EXIST "%FTPFILE%" (DEL "%FTPFILE%")
EXIT /B 0