Windowsbatch file压缩,然后FTP文件

我目前必须windowsbatch file,第一个文件以.bak结尾的目录中的所有文件,并将其添加到一个rar文件与今天的date在名称

第二个ftp的rar文件到另一台服务器。

第一个代码是

set path="C:\Program Files\WinRAR\";%path% set date=%dd-mm-yyyy% rar a D:\backups\dbs.rar -ri1 -mt2 -ag[dd-mm-yyyy] -m5 D:\backups\*.BAK del D:\backups\*.BAK 

这是从SQL Serverpipe理器内部完成备份数据库时调用,但可以很容易地从一个计划任务运行

秒码是

 @echo off echo user Dbusser> ftpuploader.dat echo ftppassword>> ftpuploader.dat echo bin>> ftpuploader.dat echo put %1>> ftpuploader.dat echo quit>> ftpuploader.dat ftp -n -s:ftpuploader.dat 127.0.0.1 del ftpuploader.dat 

我从一个cmd promt手动调用rar文件的名称作为参数

 ftpuploader.bat d:\pathtorar\dbs[21-10-2013].rar 

我想知道的是谁能告诉我如何合并这两个文件,所以它会自动上传文件,一旦它的创build和完成它或自动化计划任务,以改变date位的rar文件的名字每天

谢谢

这需要XP Pro和更高版本才能使用Wmic。

它以可靠的方式用日期设置变量,并使用它创建RAR文件名并启动FTP批处理文件。

if not errorlevel 1 del D:\backups\*.BAK ,如果RAR归档因任何原因失败,应该保护* .bak文件免于被删除。

 @echo off for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%" set "datestamp=%DD%-%MM%-%YYYY%" set path="C:\Program Files\WinRAR\";%path% rar a D:\backups\dbs[%datestamp%].rar -ri1 -mt2 -m5 D:\backups\*.BAK if not errorlevel 1 del D:\backups\*.BAK ftpuploader.bat D:\backups\dbs[%datestamp%].rar 

几个我不喜欢的脚本:我不知道set date=%dd-mm-yyyy%正在做什么。不知道什么时候删除了* bak文件。如果你想上传二进制文件,你需要以二进制模式设置ftp脚本。 下面是一个没有临时文件的方法:

 !&cls&echo off&setlocal ENABLEDELAYEDEXPANSION !goto :end_ftp !rem :: ftp part open server Dbusser ftppassword prompt binary mput *.BAK bye :end_ftp set path="C:\Program Files\WinRAR\";%path% rem get _date in format DD-MM-YYYY Set /A "Jan=1,Feb=2,Mar=3,Apr=4,May=5,Jun=6,Jul=7,Aug=8,Sep=9,Oct=10,Nov=11,Dec=12" Type Nul >"%TEMP%\~.ddf" Makecab /D RptFileName="%TEMP%\~.rpt" /D InfFileName=Nul /F "%TEMP%\~.ddf" >Nul Set /P "timestamp=" <"%TEMP%\~.rpt" For /F "tokens=3-9 delims=: " %%a In ("%timestamp%") Do ( Set /A "year=%%g,month=%%b,day=1%%c-100" ) Del /Q "%TEMP%\~.*" Echo year=%year% month=%month% day=%day% set "_date=%day%-%month%-%year%" rem date is ready to use rar a D:\backups\dbs.rar -ri1 -mt2 -ag[%_date%] -m5 D:\backups\%_date%\*.BAK pushd D:\backups\%_date%\*.BAK ftp -s:%~dpsnx0 popd del D:\backups\%_date%\*.BAK /Q /F RD /S /QD:\backups\%_date%\ 

这个想法是,你正在创建一个日期名称的目录(我想你的日期格式是dd-mm-yyyy),然后在这个目录中启动ftp并使用提示(超过提示),然后使用mput上传所有文件.bak扩展名。因此,ftp脚本不需要任何参数。对于自包含的ftp脚本, 这里有更多解释 。