簡體   English   中英

windows批處理文件到zip然后ftp文件

[英]windows batch file to zip and then ftp file

我目前必須使用Windows批處理文件,首先將所有文件放在一個以.bak結尾的目錄中,然后將它們添加到rar文件中,名稱中包含今天的日期

第二個將rar文件ftp到另一台服務器。

第一個代碼是

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 server manager內部調用,但可以很容易地從計划任務運行

秒代碼是

@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

我想知道的是,任何人都可以告訴我如何合並這兩個文件,以便一旦創建並完成它就自動上傳文件,或者自動執行計划任務,以便每天更改rar文件名稱中的日期位

謝謝

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

它以可靠的方式使用日期設置變量,並使用它來創建RAR文件名並啟動FTP批處理文件。

if not errorlevel 1 del D:\\backups\\*.BAK我更改了這一行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 /Q D:\backups\%_date%\

我的想法是你創建一個帶有日期名稱的目錄(我想你的日期格式是dd-mm-yyyy),然后在這個目錄中啟動ftp並使用提示符(超過提示)然后使用mput上傳所有文件使用.bak擴展名。因此ftp腳本不需要任何參數。以下是對自包含ftp腳本的更多解釋

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM