Userid 变量问题

Userid 变量问题

我遇到了 2 个命令问题,如果我的用户 ID = 测试计算机,它将抓取测试而不是测试计算机。如果我的用户 ID = 测试,我没有问题。有人可以帮我解决这个问题以获得完整的用户 ID。没有空格的用户 ID 可以正常工作,有空格的用户 ID 似乎只捕获测试,我怎样才能让它同时捕获两个变量?

for /F "tokens=1,2" %%i in ('qwinsta /server:%COMPUTERNAME% ^| findstr "console"') do set userid=%%j

SET /P userid=Please Enter UserID:                   
IF "%userid%"=="" GOTO Error

在此处输入图片描述

答案1

这里的主要问题是for按空格分割。您需要按“多个空格”分割,但这样for做不行。

您可以通过将每两个空格替换为一个唯一字符(@在我的示例中)来解决此限制,然后按引入的字符进行拆分:

@echo off
setlocal enabledelayedexpansion

for /f "delims=" %%a in ('qwinsta /server:%COMPUTERNAME%^|findstr /bc:" console "') do (
  set "line=%%a"
  for /f "tokens=2 delims=@" %%b in ("!line:  =@!") do set "userid=%%b"
)
if "%userid:~0,1%" == " " set "userid=%userid:~1%"
if "%userid:~-1%" == " " set "userid=%userid:~0,-1%"
echo "%userid%"

该变量可能包含一个前导空格和/或一个尾随空格(以前称为不成对的空格),您必须将其删除(这两个if命令)。

相关内容