Concuurency with my Windows Batch Script
by vaman00 - 1/21/10 2:02 PM
I am trying to run this script with the hope that it can be invoked by multiple jobs at the same time but i am getting the following error concurrency message. I have ensured the logs files are different to each job unless windows doesn't handle the random numbers properly. I can't fugre out what the problem is. Please help. My unix script for the same functionality works wonderfully
"The process cannot access the file because it is being used by another process."
Here is the script
:: ------------------------------------------------------------------
:: PROGRAM: esplmi.cmd
:: JOB : this script can be invoked by any script that would like
:: ESP event trigger condition to be created by passing the
:: ESP event trigger condition name
::
:: ------------------------------------------------------------------
:: The general logic of this script is as follows:
:: - Read ESP event trigger condition parameter
:: - Invoke ESPlmi with the read parameter
:: --------------------------------------------------------------:: ------------------------------------------------------------------
:: - Added logic after for ESPlmi failure condition, to sleep
:: and try again (5 times). After continued failures - ftp file to sliudv91
::
:: ------------------------------------------------------------------
:: ------------------------------------------------------------------
:: Set up variables
:: ------------------------------------------------------------------
@ECHO OFF
set CONDITION=%1
set t=%time:~0,8%
set t=%t::=-%
set UNIQUENO=%RANDOM%
set CURRENT_DIR=C:\esp\scripts
set ESP_LOG_DIR=%CURRENT_DIR%
set LOGFILE="%ESP_LOG_DIR%\esplmi_today_%UNIQUENO%.log"
set SLOGFILE="%ESP_LOG_DIR%\esplmi_success_%UNIQUENO%.log"
set ERRORFILE="%ESP_LOG_DIR%\ESP_TRIG_FAILED_%UNIQUENO%.txt"
set SERVER=%COMPUTERNAME%
set ESP_AGENT_ENV=%2
set PASS=1
:: -----------------------------------------------------------------------------
:: Execute the ESP Event triggering agent
:: -----------------------------------------------------------------------------
ECHO. > %LOGFILE%
ECHO "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" >> %LOGFILE%
ECHO "%Date% %TIME% Started: ESPlmi Event trigger script has started." >> %LOGFILE%
ECHO. >> %LOGFILE%
CD %CURRENT_DIR%
:ESPLMILOOP
C:\PROGRA~1\Cyberm~1\ESPSYS~1\esplmi -c"oper tr %ESP_AGENT_ENV%.conditon_1 user1(%CONDITION%)" >> %LOGFILE%
find "EVENT TRIGGERED" %LOGFILE% > %SLOGFILE%
IF ERRORLEVEL 1 GOTO ERROR
IF ERRORLEVEL 0 GOTO SUCCESS
:ERROR
ECHO. >> %LOGFILE%
ECHO "%Date% %TIME% Error: ESP trigger %CONDITION% failed in Pass %PASS%" >> %LOGFILE%
ECHO. >> %LOGFILE%
ECHO "485" > %ERRORFILE%
ECHO "%SERVER%" >> %ERRORFILE%
ECHO "%CONDITION%" >> %ERRORFILE%
ECHO "%PASS%" >> %ERRORFILE%
IF "%PASS%"=="1" GOTO FTP
IF "%PASS%"=="2" GOTO FTP
IF "%PASS%"=="3" GOTO FTP
IF "%PASS%"=="4" GOTO FTP
IF "%PASS%"=="5" GOTO FTPEND
:SUCCESS
ECHO. >> %LOGFILE%
ECHO "%Date% %TIME% SUCCESS: ESP trigger %CONDITION% created in Pass %PASS% " >> %LOGFILE%
ECHO. >> %LOGFILE%
ECHO "%Date% %TIME% Ended: ESPlmi Event trigger script has Ended." >> %LOGFILE%
TYPE %LOGFILE%
::ERASE %LOGFILE% > NUL
::ERASE %SLOGFILE% > NUL
GOTO END
:FTP
ECHO "No manual intervention is needed. Retrying it again" >> %ERRORFILE%
c:\windows\system32\ftp -v -s:%CURRENT_DIR%\sliudv91.txt sliudv91
TYPE %LOGFILE%
::ERASE %LOGFILE% > NUL
::ERASE %SLOGFILE% > NUL
::ERASE %ERRORFILE% > NUL
TIMEOUT 60
SET /A PASS=%PASS%+1
GOTO ESPLMILOOP
:FTPEND
ECHO "Manual intervention is needed." >> %ERRORFILE%
c:\windows\system32\ftp -v -s:%CURRENT_DIR%\sliudv91.txt sliudv91
TYPE %LOGFILE%
::ERASE %LOGFILE% > NUL
::ERASE %SLOGFILE% > NUL
::ERASE %ERRORFILE% > NUL
GOTO END
:END

Moderator
CNET Staff
Samsung Staff
Dell Staff