我有这个
two commands来获得SID useraccount
wmic useraccount where name='%username%' get sid | findstr /b /C:"S-1" > file.txt
要么
for /F "tokens=2 delims=," %f in ('whoami /user /FO CSV /NH') do echo %~f > file.txt
两种情况(file.txt)都包含空格/空行.我尝试删除
findstr /r /v "^$"
解决方法
@echo off setlocal enableextensions disabledelayedexpansion for /f "skip=2 tokens=2 delims=," %%a in (' wmic path win32_useraccount where name^="%username%" get sid^,status /format:csv ') do ( >"file.txt" <nul set /p"=%%a" )
这将跳过标题,包括一个额外的字段,因此sid是记录中的第二个字段(以csv格式包含节点字段)所以我们可以避免在wmic命令的输出中返回结束回车(每行以CR结尾) CR LF)并使用set / p命令将输出发送到文件,输入流从nul设备读取.这样,文件的输出将不包括echo包含的结束CR LF
在whoami版本中的代码相同
@echo off setlocal enableextensions disabledelayedexpansion for /f "tokens=2 delims=," %%a in (' whoami /user /FO CSV /NH ') do ( >"file.txt" <nul set /p"=%%~a" )