batch-file - for/f 是用设置变量的命令设置时删除该变量

标签 batch-file for-loop wmic

抱歉,如果我的标题听起来有点令人困惑。但这就是我遇到的情况。

代码:

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/

相关文章:

windows - 批处理文件按修改日期移动文件

windows - 检测操作系统批处理

windows - 如何使用windows批处理命令删除 "File with no extension"的所有内容

c++ - 基于空终止字符串的for循环范围

batch-file - dos批处理字符串操作

r - 我正在尝试为向量赋值,我尝试了循环,但它不起作用?

batch-file - BATCH FOR 命令中的 WMIC 调用返回无法解释的错误

batch-file - 保存 wmic useraccount where name 到变量

sorting - wmic 进程表(在命令提示符窗口内)可以按值排序吗?

python - 如何在python中一个一个地遍历两个列表中的项目