我正在尝试在一个批处理文件中压缩和 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)...
有很多,但其中一个很有用的是控制软件。它将改善您现在和将来的工作,因为它是一款非常好的应用程序。