抱歉,如果我的标题听起来有点令人困惑。但这就是我遇到的情况。
代码:
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
最佳答案
for /f "delims=" %u in ('wmic /node:%CompName% COMPUTERSYSTEM GET USERNAME^|find "\"') do set userfound=%~nxu
tokens
不是必需的,skip
也不是必需的。删除分隔符(空分隔符集)会将整个行传送到 %u
.
管道之前的插入符号将其转义,表示它是要执行的命令的一部分,而不是 for
的一部分。 .
find
命令只是过滤掉包含 \
的行.
~nx
之前u
意味着,将名称视为 %u
作为文件名,仅选择名称和扩展名(即最后 \
之后的部分)
关于batch-file - for/f 是用设置变量的命令设置时删除该变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43874898/