O próximo script mostra a possível abordagem usando extrair parte de uma variável (substring) .
@ECHO OFF >NUL
SETLOCAL EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%G in ("D:\test\QuerySessionLog.txt") do (
set "logline=%%~G"
set "_SESSIONNAME=!logline:~0,18!"
set "_USERNAME=!logline:~18,18!"
set "_ID=!logline:~36,11!"
set "_STATE=!logline:~47,8!"
set "_TYPE=!logline:~55,7!"
set "_DEVICE=!logline:~62!"
echo !logline!
for /F "tokens=1,* delims==" %%g in ('set _') do (
set "trimentry=%%h"
if "!trimentry:~0,1!"==">" (
call :TRIM !trimentry:~1!
) else (
call :TRIM !trimentry!
)
echo %%g=[!trimresult!] ^(raw=[%%h]^)
)
echo(
)
:endlocal
ENDLOCAL
goto :eof
:TRIM
SET "trimresult=%*"
GOTO :EOF
Por favor, note que eu absolutamente não tenho certeza sobre a exatidão das larguras das colunas como outro exemplo fornecido em query session
referência de comando mostra outro formato. No entanto, as larguras das colunas podem ser computáveis a partir da linha de cabeçalho (mas isso excederia o tópico atual da questão).