0

我需要将 zip 文件上传到 FTP 服务器。

我的第一个文件如下所示:

sqlcmd -S .\SQLEXPRESS -U <user> -P <pass> -i c:\sql_script.sql
7za a -tzip %~dp0\Archive\Backup_daily_full.zip *.bak -v100m

为了上传单个文件,我创建了这个:

@echo off
echo user {user}> ftpcmd.dat
echo {pass}>> ftpcmd.dat
echo put %1>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat  {server}

我不知道备份后我将拥有多少个 .zip 文件,以及如何将它们全部上传到 FTP 上(如何在主 .bat 中调用该文件),或者如何一次简单地上传它们。

4

2 回答 2

0

您可以遍历文件夹中的所有 .zip 文件,并为每个文件运行 ftp 脚本。

@echo off
for /r %~dp0\Archive %%a in (*.zip) do (
echo user {user}> ftpcmd.dat
echo {pass}>> ftpcmd.dat
echo put %%a>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat  {server}
)
于 2013-01-16T14:15:05.490 回答
0

在您的第一个文件中添加第三行:

cmd /c <your-ftp-script>.bat <zip-file-name>

至于遍历 zip 文件列表,按照手册中的说明进行操作(cmd /?):

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

遍历以 [drive:]path 为根的目录树,在树的每个目录中执行 FOR 语句。如果在 /R 之后没有指定目录规范,则假定为当前目录。如果 set 只是一个句点 (.) 字符,那么它只会枚举目录树。

因此,将您的压缩备份文件存储在一个干净的位置,然后用于for /r遍历列表,循环调用您的第二个 bat 文件。

于 2013-01-16T13:31:58.230 回答