如何从net user命令查询的用户账户中过滤提取Home Directory路径
问题原因
你编写的命令无输出是因为wmic UserAccount get Name返回的结果每行末尾带有不可见的残留回车符,且输出包含空行,导致传入net user的用户名带有非法字符,命令执行失败。
修复方案
1. CMD窗口直接运行
直接复制以下命令到CMD窗口执行即可提取所有用户的Home directory路径:
for /f "skip=1 delims=" %a in ('wmic UserAccount get Name ^| findstr /r /v "^$"') do @for /f "tokens=2* delims= " %b in ('net user "%a" ^| findstr /c:"Home directory"') do @echo %b %c
2. 批处理脚本中运行
如果是写.bat批处理文件使用,需要把所有变量前的%替换为%%,示例代码如下:
@echo off :: 遍历所有用户账户 for /f "skip=1 delims=" %%a in ('wmic UserAccount get Name ^| findstr /r /v "^$"') do ( :: 提取对应用户的Home directory路径 for /f "tokens=2* delims= " %%b in ('net user "%%a" ^| findstr /c:"Home directory"') do ( :: 输出路径,可自行修改为写入文件等操作 echo %%b %%c ) )
提取Logon hours allowed的修改方法
如果需要提取Logon hours allowed的内容,只需要把上述命令中findstr /c:"Home directory"的部分替换为findstr /c:"Logon hours allowed"即可。
命令说明
- 第一层for循环先用
findstr /r /v "^$"过滤掉wmic输出的空行,同时去除每行末尾的残留回车符 - 用户名用
"%a"包裹,兼容带空格的用户名 - 第二层for循环拆分
net user的输出结果,只保留路径/值部分,不输出"Home directory"前缀
内容的提问来源于stack exchange,提问作者Sadam
相关产品推荐
相关产品推荐

