可以仅使用批处理脚本列出具有特定格式的所有用户吗?

时间:2015-03-22 16:00:57

标签: batch-file

假设不允许使用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中获取用户帐户吗?

2 个答案:

答案 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

您必须将字符串BenutzerkontenDer Befehl更改为您的语言。

供参考:net user输出:

Benutzerkonten für \\AKOYAD

-------------------------------------------------------------------------------
Administrator            Myuser                Gast
Backup
Der Befehl wurde erfolgreich ausgeführt.

也许wmic useraccount get name可以替代。