anchor.diff:  set CMDLINE=%ARGS%
   if defined CMDLINE (
     call :Entities.decode ARGS CMDLINE
  -  set CMDLINE=%CMDLINE% ^^^| findstr /R "^."
  +  set CMDLINE=%CMDLINE%^^^| findstr /R "^."
  +  set "SENDKEYS="
   ) else ( :# No command. Get the input from standard input.
     set CMDLINE=findstr /R "^."
  -  set SET=CScript //nologo //E:JScript "%SFULL%"
  +  if "%CAPTURE%"==":CaptureLast" set SET=CScript //nologo //E:JScript "%SFULL%"
  +  set "SENDKEYS=%EXEC% CScript //nologo //E:JScript "%SFULL%" -s %VAR% RESULT"
   )
   :# %IF_NOEXEC% set CMDLINE
   :# In no-exec mode, correct the # of ^ so that the ^| displays right
   %IF_NOEXEC% set CMDLINE=%CMDLINE: ^| = ^^^^^^^| %
  +
  +goto %CAPTURE%
  +
  +:# Capture all output lines, quoting those with spaces or special characters
  +:CaptureAll
  +setlocal EnableDelayedExpansion
  +set "RESULT="
  +%EXEC% for /f "delims=" %%s in ('%CMDLINE%') do call :lappend RESULT "%%~s"
   
   :# NOTE: The findstr CMDLINE, used by default above, works for capturing stdin.
   :# What does not work is the export of the variable to the parent cmd.exe using pure batch.
  
positive.code: :#   2021-01-11 JFL Created this script.				      *
  :#   2021-01-22 JFL Added a dirty work around the pipe issue by generating    *
  :#                  key strokes using JScript WScript.Shell.SendKeys().       *
  :#                                                                            *
  :#         Copyright 2021 Hewlett Packard Enterprise Development LP          *
  :# Licensed under the Apache 2.0 license: www.apache.org/licenses/LICENSE-2.0 *
  :#*****************************************************************************
  
  setlocal EnableExtensions DisableDelayedExpansion
  set "VERSION=2021-01-22"
  set "SCRIPT=%~nx0"		&:# Script name
  set "SNAME=%~n0"		&:# Script name without the extension
  set "SPATH=%~dp0"
  
negative.code: 
  :#----------------------------------------------------------------------------#
  
  :# Quote strings that require it.
  :condquote	 %1=Input variable. %2=Opt. output variable.
  setlocal EnableExtensions Disabledelayedexpansion
  set "RETVAR=%~2"
  if not defined RETVAR set "RETVAR=%~1" &:# By default, change the input variable itself
  call set "P=%%%~1%%"
  :# If the value is empty, don't go any further.
  if not defined P set "P=""" & goto :condquote_ret
  :# Remove double quotes inside P. (Fails if P is empty)
  set "P=%P:"=%"
  :# If the value is empty, don't go any further.
  if not defined P set "P=""" & goto :condquote_ret
  :# Look for any special character that needs quoting
  :# Added "@" that needs quoting ahead of commands.
  :# Added "|&<>" that are not valid in file names, but that do need quoting if used in an argument string.
  echo."%P%"|findstr /C:" " /C:"&" /C:"(" /C:")" /C:"[" /C:"]" /C:"{" /C:"}" /C:"^^" /C:"=" /C:";" /C:"!" /C:"'" /C:"+" /C:"," /C:"`" /C:"~" /C:"@" /C:"|" /C:"&" /C:"<" /C:">" >NUL
  if not errorlevel 1 set P="%P%"
  :condquote_ret
  :# Contrary to the general rule, do NOT enclose the set commands below in "quotes",
  :# because this interferes with the quoting already added above. This would
  :# fail if the quoted string contained an & character.
  :# But because of this, do not leave any space around & separators.
  endlocal&set %RETVAR%=%P%&exit /b 0
  
  :#----------------------------------------------------------------------------#
  
  :# Build a list of strings that can be used in a for loop
  :lappend	%1=List variable name. %2=String to add to the list
  setlocal DisableDelayedExpansion
  set "STRING=%~2"
  call :condquote STRING
  setlocal EnableDelayedExpansion
  set "LIST=!%~1!"
  if defined LIST set "LIST=!LIST! "
  endlocal & endlocal & set %~1=%LIST%%STRING%
  exit /b
  
  :#----------------------------------------------------------------------------#
  
  :Entities.init
  :# Define variables for problematic characters, that cause parsing issues.
  :# Use the ASCII control character name, or the html entity name.
  