Saludos,
Puedes usar los Tokens que permite For /F, es decir, cortar en trozos la salida de un comando mediante un caracter (en este caso el la Coma y el Espacio) y luego solo tomar los trozos que uno necesite:
For /F "tokens=3,4,5,6,8,* delims=, "
%%a In ( 'Reg Query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems" /V Windows'
Echo %%a %%b %%c,
%%d,2048
%%e %%f )
Lo cual devuelve:
%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,20480,2048 Windows=On SubSystemType=Windows
ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThrea
ds=16
---
Teniendo en cuenta que los Tokens completos serían
+-------------------------------------------------------------+--------------------+
| 1 | 2 |
+-------------------------------------------------------------+--------------------+
| HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session | Manager\SubSystems |
+-------------------------------------------------------------+--------------------+
| Windows | REG_EXPAND_SZ |
+-------------------------------------------------------------+--------------------+
+---------------------------------+--------------------------+--------------------+
| 3 | 4 | 5 |
+---------------------------------+--------------------------+--------------------+
| | | |
+---------------------------------+--------------------------+--------------------+
| %SystemRoot%\system32\csrss.exe | ObjectDirectory=\Windows | SharedSection=1024 |
+---------------------------------+--------------------------+--------------------+
+-------+-----+------------+
| 6 | 7 | 8 |
+-------+-----+------------+
| | | |
+-------+-----+------------+
| 20480 | 768 | Windows=On |
+-------+-----+------------+
+-------------------------------------------------------------------------------------------------------
| *
+-------------------------------------------------------------------------------------------------------
|
+-------------------------------------------------------------------------------------------------------
| SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16
+-------------------------------------------------------------------------------------------------------La primera línea se pierde (obvia) porque no tiene el token 3
Para que haga la modificación en el Registro debes cambiar el Echo por un Reg Add así:
For /F "tokens=3,4,5,6,8,* delims=, "
%%a In ( 'Reg Query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems" /V Windows'
Echo %%a %%b %%c,
%%d,2048
%%e %%f Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems" /V Windows /T REG_EXPAND_SZ /D "%%a %%b %%c,%%d,2048 %%e %%f" /F
)
También recuerda que como se está modificando un valor de HKLM será necesario ejecutar el Script con permisos de Administrador