Sorry folks for chiming in here..
This may not be 100% what you are looking for, but I have used this with in-use log files for Apache Tomcat and it works absolutely perfectly.
Thanks to @dbenham for his awesome code! https://stackoverflow.com/a/10520609/175063
REM TOMCAT LOGS
FOR /r "D:\logs" %%X IN (*) DO (
2>nul ( >>D:\logs\!FileName!" (call )) && (
REM DO STUFF HERE
FOR /f "tokens=1-3 delims=.:/ " %%j IN ("!ModDt!") DO SET FDate=%%l-%%j-%%k&Set RegDate=%%j-%%k-%%l
IF "%CurrentDate%" NEQ "!FDate!" (
IF %%~zX GTR 0 (
ECHO ARCHIVING "D:\logs\!FileName!" >> %logfile%
7za.exe -tzip -y a "D:\Zips\%COMPUTERNAME%-Tomcat-!RegDate!-compressed.zip" "D:\logs\!FileName!" && (
DEL /Q "D:\logs\!FileName!"
) || (
if "%ERRORLEVEL%" == "2" (
echo Zipping failed ^(exit status %ERRORLEVEL%^). Trying again in 5 seconds...
) else (
echo Zip completed with warnings ^(most likely because a file was locked by another
echo process and had to be skipped^). Trying again in 5 seconds...
del "D:\Zips\%COMPUTERNAME%-Tomcat-!RegDate!-compressed.zip" >NUL 2>&1
PING 0.0.0.0 -n 6 -w 1000 >NUL
REM END OF UNLOCKED ZONE
) || (
ECHO FILE IS LOCKED