通过批处理脚本 Zip 和 FTP 传输文件

通过批处理脚本 Zip 和 FTP 传输文件

我正在尝试在一个批处理文件中压缩和 FTP 文件。Zip 部分可以正常工作,但 FTP 应用程序会读取整个批处理脚本,而不仅仅是 FTP 命令下面的行,从而导致错误

如果这些文件不是按顺序读取的,如何在同一个批处理文件中进行 Zip 和 FTP 操作?

@echo off
:: zip the file(s)
7z a -tzip c:\test.zip c:\unst.log
:: ftp the files
C:\WINDOWS\system32\ftp.exe -s:%0
open 10.1.7.10
myusername
mypassword
binary
put c:\test.zip
quit
pause
::exit

答案1

我不确定它是如何%0工作的,但按照以下方式做,它对我来说工作得很好:

@echo off
C:\WINDOWS\system32\ftp.exe -s:ftp_data.txt
pause

其中 ftp_data.txt 包含以下内容:

open 10.0.0.2
username
password
binary
put the_file_i_want_to_upload.txt
quit

答案2

是否需要将它们全部保存在一个文件中?因为你正在做的是告诉它自己解析命令以提供给 FTP,这(显然)行不通。

最简单(也是正常)的方法是使用一个ftp_script.txt包含 FTP 命令的单独文件。

答案3

首先,您的脚本在所有情况下都能执行您想要的操作吗?例外?

我看到如果目标文件存在,它将覆盖它...如果它们是重要文件,那就太糟糕了

如果传输失败...没有日志!!(如果您必须搜索数月的日志,这对于生产环境很重要)

虽然乍一看使用微软的 FTP 客户端可能很有趣,如果您认为该项目将持续一周以上,我认为您应该考虑使用更强大的 FTP/SFTP 客户端。

客户端能够获取日志,能够避免覆盖存在的文件(您希望如此),可以与其他脚本集成(例如 PowerShell 或 Wscript)...

有很多,但其中一个很有用的是控制软件。它将改善您现在和将来的工作,因为它是一款非常好的应用程序。

相关内容