anchor.diff:      rem Append args as name tail to be obvious when lookup on cluster web page    
       call %CommonToolDir%\bat\get-appendix-name-from %SparkOptions%
       set submitArgs=--name %appName%-run-%PerfRunCount%__%AppNameBySparkOptions% %SparkOptions% --exe SparkCLRPerf.exe %exeDir% %args%
  -    echo %date% %time% sparkclr-submit.cmd %submitArgs%
  +    echo.
  +    echo %date% %time% sparkclr-submit.cmd %submitArgs% | lzmw -PA -ie "([\w\.]*\.\w*mobius\w*\.[\w\.]*)|SparkOption\w*|(?:=)\w+|\s+\d+\w{0,2}(\s+|$)" -t "((--name))\s+(((\S+)))" -a
  +    if "%JustShowCmd%" == "1" exit /b 0
       echo %date% %time% sparkclr-submit.cmd %submitArgs% >> %logPath%
  -    call sparkclr-submit.cmd %submitArgs%  2>&1 | lzmw -it "tracking URL|final status" -PC -c -T 2 >> %logPath%
  +    call sparkclr-submit.cmd %submitArgs% 2>&1 | lzmw -P -it "error|exception|not found|cannot|failed|warn" -a
  +    :: call sparkclr-submit.cmd %submitArgs%  2>&1 | lzmw -it "tracking URL|final status" -PC -c -T 2 >> %logPath%
       echo. >> %logPath%
       
  +    
  
positive.code: @echo off
  rem Submit and compare new and old performance test on cluster by default.
  SetLocal EnableDelayedExpansion
  
  set ShellDir=%~dp0
  if %ShellDir:~-1%==\ set ShellDir=%ShellDir:~0,-1%
  set CommonToolDir=%ShellDir%\..\..\tools
  rem call %CommonToolDir%\set-common-dir-and-tools.bat
  for /F "tokens=*" %%a in (' hostname ') do set hostname=%%a
  
  if "%~1" == "" (
      echo Usage  :  %0  PerfRunCount SubmitTimes  NewPerfExeDir       OldPerfExeDir            MobiusJarDir           LogDir               LogName
      echo Example : %0  1            1            D:\mobius\new-test  D:\mobius\latest-master  d:\mobius\dependencies D:\mobius\perf-logs  perf--by-%USERNAME%--on-%hostname%.log
      echo To avoid default, you can set variables of the above and : OldPerfAppName NewPerfAppName JarOptions SparkOptions .
      echo Such as :
      echo set OldPerfExeDir=D:\msgit\orgMobius\csharp\Perf\Microsoft.Spark.CSharp\bin\Release
      echo set NewPerfExeDir=D:\msgit\lqmMobius\csharp\Perf\Microsoft.Spark.CSharp\bin\Release
      echo set MobiusJarDir=d:\mobius\perf-lz\dependencies
      echo set OldPerfAppName=org-perf 
      echo set NewPerfAppName=new-perf
      exit /b 5
  )
  
  
negative.code: 
  echo Submit parameters will be saved in %logPath%
  
  if not defined SparkOptions (
      set SparkOptions=--total-executor-cores 30 --executor-memory 8G
      set SparkOptions=--total-executor-cores 100 --executor-memory 30G --driver-memory 32G
      set SparkOptions=--num-executors 100 --executor-cores 28 --executor-memory 30G --driver-memory 32G
      set SparkOptions=--num-executors 100 --executor-cores 28 --executor-memory 8G --driver-memory 12G
      set SparkOptions=--master yarn-cluster !SparkOptions! %JarOptions% %EventOptions% 
  )
  
  for /F "tokens=*" %%a in ('echo !SparkOptions! ^| lzmw -it ".*--jars\s+(\S+).*" -o "$1" -PAC ^| lzmw -it "\s*,\s*" -o "\n" -PAC ') do (
      if not exist %%a ( echo Not exist %%a | lzmw -PA -it ".*" ) else (echo Found jar : %%a | lzmw -PA -ie ".*")
  )
  
  if not defined OldPerfAppName (
      call %CommonToolDir%\bat\get-name-by-git-in-dir-to-var %OldPerfExeDir% OldPerfAppName
      if not "!OldPerfAppName!" == "" ( set "OldPerfAppName=%PerfExeName%-!OldPerfAppName!" ) else ( set "OldPerfAppName=%PerfExeName%" )
  )
  
  if not defined NewPerfAppName (
      call %CommonToolDir%\bat\get-name-by-git-in-dir-to-var %NewPerfExeDir% NewPerfAppName
      if not "!NewPerfAppName!" == "" ( set "NewPerfAppName=%PerfExeName%-!NewPerfAppName!" ) else ( set "NewPerfAppName=%PerfExeName%" )
  )
  
  if "%OldPerfAppName%" == "%NewPerfAppName%" (
      set OldPerfAppName=%PerfExeName%-old
      set NewPerfAppName=%PerfExeName%-new
  )
  
  echo PerfRunCount = %PerfRunCount%, SubmitTimes = %SubmitTimes% | lzmw -PA -ie "\w+"
  
  for /L %%k in (1,1,%SubmitTimes%) do (
      call :Submit_Dir_AppName %OldPerfExeDir% %OldPerfAppName%
  