假设不允许使用Powershell。只允许批处理脚本。
我使用net user
获取以下输出:
User accounts for \\PC-Demo
-----------------------------------------------------------------------------
abc123 Administrator ASPNET
blah_blah Demo Guest
SUPPORT_388945a0 Test
The command completed successfully.
我想输出一个文件
abc123
Administrator
ASPNET
blah_blah
Demo
Guest
SUPPORT_388945a0
Test
主要问题是很难从输出中获取用户名,因为这不是由分隔符分隔的。它以表格格式分开,长度也是可变的,当有更多用户帐户时,将显示更多行。或者除了使用net user
之外,还有更好的方法可以在Windows中获取用户帐户吗?
答案 0 :(得分:2)
你可以单独使用它,但它需要的不仅仅是单行。
首先,您需要计算输出中的行,然后处理具有预期内容的行的输出
@echo off
set /a linecount=0
for /f "tokens=*" %%i in ('net user') do call :IncrementLinecount
set /a lastline=%linecount%
set /a linecount=0
for /f "tokens=*" %%i in ('net user') do (
call :IncrementLinecount
call :ProcessOutput %%i
)
goto :eof
:IncrementLinecount
set /a linecount=%linecount%+1
goto :eof
:ProcessOutput
if /i %linecount% LEQ 2 goto :eof
if /i %linecount% GEQ %lastline% goto :eof
:loop
if not [%1] == [] (
shift
@echo %1
goto :loop
)
goto :eof
答案 1 :(得分:0)
我不太喜欢它,因为这取决于你的语言(德语对我而言),但我们走了:
(for /f "tokens=*" %%b in ('net user^|findstr /v /b /c:"Benutzerkonten" /c:"----" /c:"Der Befehl" ') do for %%a in (%%b) do echo %%a)>file.txt
您必须将字符串Benutzerkonten
和Der Befehl
更改为您的语言。
供参考:net user
输出:
Benutzerkonten für \\AKOYAD
-------------------------------------------------------------------------------
Administrator Myuser Gast
Backup
Der Befehl wurde erfolgreich ausgeführt.
也许wmic useraccount get name
可以替代。