Cela combine des aspects de réponse de Gary et réponse d'Oscar .  ; Comme l'a noté Gary, la sortie de query session ressemble à
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
>console janedoe 1 Active
rdp-tcp 65536 Listen
ou, dans mon cas (en utilisant “Switch user”)
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
>console gman 1 Active
otherguy 2 Disc
(Je n'ai pas configuré RDP, donc je ne peux pas tester avec. )  ; On peut supposer que l'objectif de la question est de déterminer l'identifiant de la session actuellement active.   ; Je suggère de chercher dans la sortie de query session ce qui ressemble à la session actuelle :
for /f "tokens=2-4" %a in ('query session') do @if "%a"=="%username%" if "%c"=="Active" echo %b
qui assigne le 2ème, 3ème et 4ème mot (que nous espérons être le USERNAME, [SESSION] ID, et STATE) de chaque ligne de la sortie de query session à %a, %b, et%c, respectivement, et ensuite rapporte le SESSION ID de la ligne où USERNAME est moi et STATE est Active.
Il s'avère que query session prend un paramètre username, donc ce qui précède peut être simplifié en
for /f "tokens=2-4" %a in ('query session %username%') do @if "%c"=="Active" echo %b
ou
for /f "tokens=3-4" %a in ('query session %username%') do @if "%b"=="Active" echo %a
Pour l'utiliser dans un script (fichier batch), vous pourriez dire
set MY_SESSION_ID=unknown
for /f "tokens=3-4" %%a in ('query session %username%') do @if "%%b"=="Active" set MY_SESSION_ID=%%a
en utilisant %%a et %%b (au lieu de %a et %b) parce que c'est dans un script.   ; Vous pouvez probablement omettre le @ si tout le fichier du lot est sous @echo off. L'initialisation à unknown vous permet de faire du traitement d'erreur (détecter s'il n'y a pas de ligne dans la sortie de query session qui correspond).  ; Extension du traitement d'erreur pour reconnaître et réagir s'il y a multiple lignes correspondantes dans la sortie de query sessionis laissée comme exercice.