很抱歉,如果我的标题听起来有点令人困惑。但这就是我遇到的情况。
代码:
for /f "skip=1 tokens=1,3 delims=," %u in ('wmic /node:%CompName% COMPUTERSYSTEM GET USERNAME') do set userfound=%u
输出:
:\windows\system32>set userfound= domain\username
:\windows\system32>set userfound=
代码结果图片: Code Results
原始代码:
wmic /node:%CompName% COMPUTERSYSTEM GET USERNAME
它是输出:
Username
domain\username
我要做的是让变量只等于用户名,而不是为批处理文件添加域名。之后我会将该用户名保存为一个变量,该变量将保存在许多连接的批处理文件中。
我还想确保for / f不循环(即使它是一个循环命令)不会替换我的var。
所以我对这里的代码感到茫然。
通缉结果
[out put of code]=username
答案 0 :(得分:2)
for /f "delims=" %u in ('wmic /node:%CompName% COMPUTERSYSTEM GET USERNAME^|find "\"') do set userfound=%~nxu
tokens
不是必需的,skip
也不是。{1}}。删除分隔符(空分隔符集)会将整行传递到%u
。
管道前的插入符号将其转义为表示它是要执行的命令的一部分,而不是for
。
find
命令只会过滤掉包含\
。
~nx
之前的u
表示将%u
中的名称视为文件名,只选择名称和扩展名(即最后{{1}后的那个部分})
答案 1 :(得分:2)
尝试这样:
for /f "skip=1 tokens=1,3 delims=," %%u in (
'wmic COMPUTERSYSTEM GET USERNAME'
) do (
for /f "tokens=* delims=" %%# in ("%%u") do set userfound=%%#
)
echo %userfound%