Monday, October 27, 2008

More DOS batch fun

Recently I needed to create a simple way to backup alot of website's log files. The directory structure is such:


C:\DemoSites\
|
|----\Demo1
| |
| |-----\Logs
|
|----\Demo2
| |
| |-----\Logs
|
|----\Demo3
| |
| |-----\Logs
|
|----\Demo4
| |
| |-----\Logs
|
... etc

... So I need to backup the log files inside each "Logs" directory, in a loop...

Here is the batch file that takes care of it:


   01: @ECHO OFF

   02:  

   03: :: Get Today's Date in YYYYMMDD Format...

   04: for /F "tokens=2-4 delims=/ " %%a in ('date/t') do (set datevar=%%c%%a%%b)

   05:  

   06: :: For each subdirectory of C:\DemoSites, Zip all log files in their Logs directories...

   07: for /D %%d in (C:\DemoSites\*) do (

   08:     if exist %%d\Logs (

   09:         for /F "tokens=5 delims= " %%k in ('dir %%d\..\.') do (

   10:             if exist %%d\..\%%k\Logs\*.* (

   11:                 if not exist C:\Backup\archive_%%k-Logs_%datevar%.zip ( 

   12:                     \util\zip -9 -j C:\Backup\archive_%%k-Logs_%datevar%.zip %%d\..\%%k\Logs\*.*

   13:                 )

   14:             )

   15:         )

   16:     )

   17: )


[ Note: I'm using Info-Zip to compress the log files. ]

0 comments:

redir