![]() |
@echo off
rem ---------------------------------------------------------------------------
rem Backup web application to remote host
rem
rem $Id: remote_backup_web.bat 2011-10-20 07:10:58 andowson $
rem ---------------------------------------------------------------------------
rem Find out Windows version
for /f "tokens=1-2 delims=[" %%i in ('ver') do echo %%j > ver1.txt
for /f "tokens=1-2 delims= " %%i in (ver1.txt) do echo %%j > ver2.txt
for /f "tokens=1 delims=]" %%i in (ver2.txt) do set vers=%%i
del ver1.txt
del ver2.txt
if %vers% GEQ 6 goto ver6
rem Find out web server's IP address
ipconfig | findstr "Address" > ip1.txt
for /f "tokens=1-2 delims=:" %%i in (ip1.txt) do echo %%j > ip2.txt
for /f "tokens=1-2 delims= " %%i in (ip2.txt) do (set ip=%%i)
del ip1.txt
del ip2.txt
goto common
:ver6
rem Find out web server's IP address
ipconfig | findstr "IPv4 位址" > ip1.txt
for /f "tokens=1-2 delims=:" %%i in (ip1.txt) do echo %%j > ip2.txt
for /f "tokens=1-2 delims= " %%i in (ip2.txt) do (set ip=%%i)
del ip1.txt
del ip2.txt
:common
rem Get today's year, month, day
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set year=%%a& set month=%%b& set day=%%c)
rem Modify the following line for your environment
set TARGETNAME=demoweb
set TARGET=C:\Inetpub\wwwroot\%TARGETNAME%
set BACKUPDIR=D:\backup
set BACKUPFILE=%BACKUPDIR%\%year%\%TARGETNAME%_%ip%_%year%%month%%day%.zip
set LOGFILE=%TARGETNAME%_backup.log
set ZIPPASSWORD=secret
echo. | date | findstr "現在日期" >> %LOGFILE%
echo. | time | findstr "現在時間" >> %LOGFILE%
rem Compress the target directory with encryption password before ftp
"C:\Program Files\7-Zip\7z.exe" a -p%ZIPPASSWORD% %BACKUPFILE% %TARGET%\* >> %LOGFILE%
if not exist %BACKUPDIR%\%year% mkdir %BACKUPDIR%\%year%
if not exist %BACKUPFILE% goto nofile
goto ftpsession
:nofile
echo [FAILURE] File not found: %BACKUPFILE% >> %LOGFILE%
echo.>> %LOGFILE%
goto end
:ftpsession
for /f "tokens=1-3 delims= " %%i in (ftp.cfg) do (set FTPSERVER=%%i&set USERNAME=%%j&set PASSWORD=%%k)
echo mkdir %year%%month%%day% > ftpscript.txt
echo cd %year%%month%%day% >> ftpscript.txt
echo put %BACKUPFILE% >> ftpscript.txt
echo bye >> ftpscript.txt
echo ---=== ftp session begin ===--->> %LOGFILE%
echo ftp %BACKUPFILE% to %FTPSERVER% >> %LOGFILE%
psftp %FTPSERVER% -l %USERNAME% -pw %PASSWORD% -be -b ftpscript.txt >> %LOGFILE%
echo ---=== ftp session end ===--->> %LOGFILE%
echo. |time | findstr "現在時間">> %LOGFILE%
echo.>> %LOGFILE%
del ftpscript.txt
set TARGET=
set TARGETNAME=
set BACKUPDIR=
set BACKUPFILE=
set LOGFILE=
set ZIPPASSWORD=
set FTPSERVER=
set USERNAME=
set PASSWORD=
:end
remote_sftp_server username password
檔案名稱 | remote_backup_web.bat |
描述 | 改用psftp取代ftp |
檔案大小 | 3 Kbytes |
下載次數 | 8 次 |
![]() |
echo lcd %BACKUPDIR% >> ftpscript.txt
echo prompt >> ftpscript.txt
for /f %%i in (pbank.txt) do (
echo cd %%i >>ftpscript.txt
echo mget *%year%%month%%day%.* >> ftpscript.txt
echo cd .. >> ftpscript.txt
)
@echo off
for /f %%i in (holidays.txt) do (
echo %%i is a holiday
)
2011/1/1
2011/2/2
2011/2/28
2011/4/4
2011/4/5
2011/6/6
2011/9/12
2011/10/10
2011/1/1 is a holiday
2011/2/2 is a holiday
2011/2/28 is a holiday
2011/4/4 is a holiday
2011/4/5 is a holiday
2011/6/6 is a holiday
2011/9/12 is a holiday
2011/10/10 is a holiday
andowson wrote:我的意思是指如果您想要拜訪(visit)holidays.txt檔案中每一行的資料時,只要寫成下面的 for迴圈即可:
@echo off
for /f %%i in (holidays.txt) do (
echo %%i is a holiday
)
%%i 就是迴圈每前進一圈時,由holidays.txt所讀出的下一筆資料
假設holidays.txt內容如下
2011/1/1
2011/2/2
2011/2/28
2011/4/4
2011/4/5
2011/6/6
2011/9/12
2011/10/10
將會依序印出:
2011/1/1 is a holiday
2011/2/2 is a holiday
2011/2/28 is a holiday
2011/4/4 is a holiday
2011/4/5 is a holiday
2011/6/6 is a holiday
2011/9/12 is a holiday
2011/10/10 is a holiday
這個時候不應有 do(。
@echo off
for /f %%m in (pbank.txt) do (
echo %%m
)
echo open %FTPSERVER% > ftpscript.txt
echo user %USERNAME% %PASSWORD% >> ftpscript.txt
echo lcd %BACKUPDIR% >> ftpscript.txt
for /f %%m in (pbank.txt) do (
echo cd %%m>>ftpscript.txt
rem echo mget *%year%%month%%day%.*>> ftpscript.txt
echo mget *.*>> ftpscript.txt
echo cd \>> ftpscript.txt
)
echo cd %FTPDIR2%>>ftpscript.txt
echo mget *%year%%month%%day%.*>> ftpscript.txt
rem echo get *.*>> ftpscript.txt
echo dir *%year%%month%%day%.*>> ftpscript.txt
rem echo mget *.*>> ftpscript.txt
echo bye >> ftpscript.txt
echo ---=== ftp session begins ===--->> %LOGFILE%
echo ftp %FTPSERVER% to %BACKUPDIR% >> %LOGFILE%
echo mget *%year%%month%%day%.*>>%LOGFILE%
del ftpscript.txt
rem del ftpscript.txt
andowson wrote:starzine您好:
可否先將bat檔中的這一行註解掉:
del ftpscript.txt
方法就是前面加上rem,如下:
rem del ftpscript.txt
然後你再執行一次,接著你把ftpscript.txt和log檔都傳上來,比較方便除錯,謝謝~
@echo off
set BACKUPDIR=s:\upload
set BACKUPDIR2=s:\uploadbackup
set BACKUPFILE=%BACKUPDIR2%\%year%%month%%day%
set FTPDIR2=FundX
set LOGFILE=%year%%month%%day%_backup.log
echo wscript.echo dateadd("d",-2,date) >%tmp%\tmp.vbs
for /f "tokens=1-3 delims=/ " %%a in ('cscript /nologo %tmp%\tmp.vbs') do (set year=%%a& set month=%%b& set day=%%c)
if %month% LEQ 9 set month=0%month%
if %day% LEQ 9 set day=0%day%
echo. | date | findstr "現在日期" >> %LOGFILE%
echo. | time | findstr "現在時間" >> %LOGFILE%
:ftpsession
for /f "tokens=1-3 delims= " %%i in (ftp.cfg) do (set FTPSERVER=%%i&set USERNAME=%%j&set PASSWORD=%%k)
echo open %FTPSERVER% > ftpscript.txt
echo user %USERNAME% %PASSWORD% >> ftpscript.txt
echo lcd %BACKUPDIR% >> ftpscript.txt
for /f %%m in (pbank.txt) do (
echo cd %%m>>ftpscript.txt
echo mget *%year%%month%%day%.*>> ftpscript.txt
rem echo mget *.*>> ftpscript.txt
echo cd \>> ftpscript.txt
)
echo cd %FTPDIR2%>>ftpscript.txt
echo mget *%year%%month%%day%.*>> ftpscript.txt
rem echo get *.*>> ftpscript.txt
echo dir *%year%%month%%day%.*>> ftpscript.txt
rem echo mget *.*>> ftpscript.txt
echo bye >> ftpscript.txt
echo ---=== ftp session begins ===--->> %LOGFILE%
echo ftp %FTPSERVER% to %BACKUPDIR% >> %LOGFILE%
echo mget *%year%%month%%day%.*>>%LOGFILE%
psftp %FTPSERVER% -l %USERNAME% -pw %PASSWORD% -be -b ftpscript.txt >> %LOGFILE%
xcopy s:\upload\*%year%%month%%day%.* S:\uploadbackup /E/C/Q/R/Y
xcopy s:\upload\*.* S:\uploadbackup /E/C/Q/R/Y
if not exist %BACKUPDIR2%\%year%%month%%day% mkdir %BACKUPDIR2%\%year%%month%%day%
move /Y s:\uploadbackup\*%year%%month%%day%.* %BACKUPDIR2%\%year%%month%%day%
move /Y s:\uploadbackup\*.* %BACKUPDIR2%\%year%%month%%day%
echo ---=== ftp session ends ===--->> %LOGFILE%
echo. |time | findstr "現在時間">> %LOGFILE%
echo %BACKUPDIR2%\%year%%month%%day%>> %LOGFILE%
echo %BACKUPFILE1%>> %LOGFILE%
echo.>> %LOGFILE%
rem del ftpscript.txt
rem del %LOGFILE%_backup.log
move /Y I:\wSTN_IO\_backup.log %BACKUPDIR2%\%year%%month%%day%
move /Y I:\wSTN_IO\ftpscript.txt %BACKUPDIR2%\%year%%month%%day%
set TARGET=
set TARGETNAME=
set BACKUPDIR=
set BACKUPFILE=
set LOGFILE=
set FTPSERVER=
set USERNAME=
set PASSWORD=
:end
open 61.66.19X.XXX
user S00XX S0XXX
lcd s:\upload
cd A0001
mget *20120104.*
cd \
cd A0002
mget *20120104.*
cd \
cd A0003
mget *20120104.*
cd \
cd A0004
mget *20120104.*
cd \
cd A0005
mget *20120104.*
cd \
cd A0006
mget *20120104.*
cd \
cd A0007
mget *20120104.*
cd \
cd A0008
mget *20120104.*
cd \
cd A0009
mget *20120104.*
cd \
cd A0010
mget *20120104.*
cd \
cd A0011
mget *20120104.*
cd \
cd A0012
mget *20120104.*
cd \
cd A0013
mget *20120104.*
cd \
cd A0014
mget *20120104.*
cd \
cd A0015
mget *20120104.*
cd \
cd A0016
mget *20120104.*
cd \
cd A0017
mget *20120104.*
cd \
cd A0018
mget *20120104.*
cd \
cd A0019
mget *20120104.*
cd \
cd A0020
mget *20120104.*
cd \
cd A0021
mget *20120104.*
cd \
cd A0022
mget *20120104.*
cd \
cd A0023
mget *20120104.*
cd \
cd A0024
mget *20120104.*
cd \
cd A0025
mget *20120104.*
cd \
cd A0026
mget *20120104.*
cd \
cd A0027
mget *20120104.*
cd \
cd A0028
mget *20120104.*
cd \
cd A0029
mget *20120104.*
cd \
cd A0030
mget *20120104.*
cd \
cd A0031
mget *20120104.*
cd \
cd A0032
mget *20120104.*
cd \
cd A0033
mget *20120104.*
cd \
cd A0034
mget *20120104.*
cd \
cd A0035
mget *20120104.*
cd \
cd A0036
mget *20120104.*
cd \
cd A0037
mget *20120104.*
cd \
cd A0038
mget *20120104.*
cd \
cd A0039
mget *20120104.*
cd \
cd A0040
mget *20120104.*
cd \
cd A0041
mget *20120104.*
cd \
cd A0042
mget *20120104.*
cd \
cd A0043
mget *20120104.*
cd \
cd A0044
mget *20120104.*
cd \
cd A0045
mget *20120104.*
cd \
cd A0046
mget *20120104.*
cd \
cd A0047
mget *20120104.*
cd \
cd A0048
mget *20120104.*
cd \
cd A0049
mget *20120104.*
cd \
cd A0099
mget *20120104.*
cd \
cd FundX
mget *20120104.*
dir *20120104.*
bye
@echo off
echo wscript.echo dateadd("d",-2,date) >%tmp%\tmp.vbs
for /f "tokens=1-3 delims=/ " %%a in ('cscript /nologo %tmp%\tmp.vbs') do (set year=%%a& set month=%%b& set day=%%c)
if %month% LEQ 9 set month=0%month%
if %day% LEQ 9 set day=0%day%
rem 去掉字串尾端空白
set day=%day:~,2%
set BACKUPDIR=s:\upload
set BACKUPDIR2=s:\uploadbackup
set BACKUPFILE=%BACKUPDIR2%\%year%%month%%day%
set FTPDIR2=FundX
set LOGFILE=%year%%month%%day%_backup.log
echo %LOGFILE%
echo. | date | findstr "現在日期" >> %LOGFILE%
echo. | time | findstr "現在時間" >> %LOGFILE%
:ftpsession
for /f "tokens=1-3 delims= " %%i in (ftp.cfg) do (set FTPSERVER=%%i&set USERNAME=%%j&set PASSWORD=%%k)
rem echo open %FTPSERVER% > ftpscript.txt
rem echo user %USERNAME% %PASSWORD% >> ftpscript.txt
echo lcd %BACKUPDIR% > ftpscript.txt
for /f %%m in (pbank.txt) do (
echo cd %%m>>ftpscript.txt
echo mget *%year%%month%%day%.*>> ftpscript.txt
rem echo mget *.*>> ftpscript.txt
echo cd ..>> ftpscript.txt
)
echo cd %FTPDIR2%>>ftpscript.txt
echo mget *%year%%month%%day%.*>> ftpscript.txt
rem echo get *.*>> ftpscript.txt
echo dir *%year%%month%%day%.*>> ftpscript.txt
rem echo mget *.*>> ftpscript.txt
echo bye >> ftpscript.txt
echo ---=== ftp session begins ===--->> %LOGFILE%
echo ftp %FTPSERVER% to %BACKUPDIR% >> %LOGFILE%
echo mget *%year%%month%%day%.*>>%LOGFILE%
psftp %FTPSERVER% -l %USERNAME% -pw %PASSWORD% -be -b ftpscript.txt >> %LOGFILE%
xcopy %BACKUPDIR%\*%year%%month%%day%.* %BACKUPDIR2% /E/C/Q/R/Y
xcopy %BACKUPDIR%\*.* %BACKUPDIR2% /E/C/Q/R/Y
if not exist %BACKUPDIR2%\%year%%month%%day% mkdir %BACKUPDIR2%\%year%%month%%day%
move /Y %BACKUPDIR2%\*%year%%month%%day%.* %BACKUPDIR2%\%year%%month%%day%
move /Y %BACKUPDIR2%\*.* %BACKUPDIR2%\%year%%month%%day%
echo ---=== ftp session ends ===--->> %LOGFILE%
echo. |time | findstr "現在時間">> %LOGFILE%
echo %BACKUPDIR2%\%year%%month%%day%>> %LOGFILE%
echo %BACKUPFILE1%>> %LOGFILE%
echo.>> %LOGFILE%
rem del ftpscript.txt
rem del %LOGFILE%
move /Y I:\wSTN_IO\%LOGFILE% %BACKUPDIR2%\%year%%month%%day%
move /Y I:\wSTN_IO\ftpscript.txt %BACKUPDIR2%\%year%%month%%day%
set TARGET=
set TARGETNAME=
set BACKUPDIR=
set BACKUPFILE=
set LOGFILE=
set FTPSERVER=
set USERNAME=
set PASSWORD=
:end
rem echo open %FTPSERVER% > ftpscript.txt
rem echo user %USERNAME% %PASSWORD% >> ftpscript.txt
echo lcd %BACKUPDIR% > ftpscript.txt
echo cd ..>> ftpscript.txt
rem echo open %FTPSERVER% > ftpscript.txt
rem echo user %USERNAME% %PASSWORD% >> ftpscript.txt
echo lcd %BACKUPDIR% > ftpscript.txt
echo cd ..>> ftpscript.txt
@echo off
rem 取得系統日期
for /f "tokens=1 delims= " %%a in ('date /T') do set today=%%a
rem 先找出現行目錄下所有檔案並依日期排序後再過濾出日期為系統日期之檔案存到dir.txt
dir /A:-D /O:D | find /i "%today%" > dir.txt
if exist filelist.txt del filelist.txt
rem 利用空白字元切割,由dir.txt每列的第五欄中取得檔案名稱
for /f "tokens=5 delims= " %%a in (dir.txt) do (
echo %%a >> filelist.txt
rem 下面可以開始抓檔案了
rem get %%a
)
andowson wrote:
另外我不知道你用cd \的原因為何,是否可以試著把cd \ 改為cd ..
將原第26行改為
echo cd ..>> ftpscript.txt
echo cd >> ftpscript.txt