Try a different approach , change db2cmd value to suit your environment in the code fragment below. If you still get issues, then edit your question to add the output of the db2level command, and also show what entries arrive in the db2diag.log file when the script runs.
@set db2cmd="C:\Program Files\IBM\SQLLIB\BIN\db2cmd.exe"
@if "%DB2CLP%"=="" %db2cmd% /w /c /i "%0" %* && @goto :EOF
set bkpdir=e:\backup
@if not exist %bkpdir% @echo "Directory %bkpdir% does not exist" && @goto :failEOF
db2stop force
@if errorlevel 1 @echo "Failed to stop Db2 but ignoring this"
db2start
@if errorlevel 4 @echo "Failed to start Db2" && @goto :failEOF
db2 -v backup database icmnlsdb to %bkpdir%
@if errorlevel 1 @echo "Failed to backup icmnlsdb" && @goto :failEOF
db2 -v backup database rmdb to %bkpdir%
@if errorlevel 1 @echo "Failed to backup rmdb" && @goto :failEOF
@echo "Db2 database backups completed successfully"
@exit /b 0
:failEOF
@rem You should add alerting (emails or other notifications) here
@echo "The Db2 offline backups failed"
@exit /b 1
Apart from that, you should consider using Db2 online backups, because that lets you configure Db2 to automate scheduling of the backups, manage the retention of backup images, manage notifications of failures, and there is no interruptions to connected applications.