使用参数调用另一个.bat中的.bat文件

时间:2013-01-16 13:29:49

标签: batch-file ftp cmd 7zip

我需要将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中调用该文件)或者如何一次性上传所有文件。< / p>

2 个答案:

答案 0 :(得分:0)

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

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

至于遍历zip文件列表,请按手册说(cmd /?):

  

FOR / R [[drive:] path]%变量IN(设置)DO命令[command-parameters]

     

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

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

答案 1 :(得分: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}
)