Board logo

标题: 统计用户组信息 [打印本页]

作者: yuipr     时间: 2007-2-10 03:47    标题: 统计用户组信息
@echo off
for /f "tokens=2 delims=*" %a in ('net user %username%^|find "local"') do @echo %~a
怎么用这个命令提示错误。

Last edited by yuipr on 2007-2-9 at 03:21 PM ]

作者: zh159     时间: 2007-2-10 04:16
在批处理里用%%a(双百分号),命令行用%a(单百分号)

作者: yuipr     时间: 2007-2-10 04:21
是这样吗:@echo off
for /f "tokens=2 delims=*" %%a in ('net user'%username%'^|find"local"') do @echo %~a 还是不行呢

Last edited by yuipr on 2007-2-9 at 03:23 PM ]

作者: yuipr     时间: 2007-2-10 04:23
Originally posted by zh159 at 2007-2-9 03:16 PM:
在批处理里用%%a(双百分号),命令行用%a(单百分号)

麻烦能不能再解释一下啊要,急

作者: zh159     时间: 2007-2-10 04:27
for /f "tokens=2 delims=*" %%a in ('net user %username%^|find "local"') do @echo %%~a

Last edited by zh159 on 2007-2-9 at 03:33 PM ]

作者: yuipr     时间: 2007-2-10 04:33
Originally posted by zh159 at 2007-2-9 03:27 PM:
for /f "tokens=2" %%a in ('net user %username%^|find "local"') do @echo %%~a

Last edited by zh159 on 2007-2-9 at 03:31 PM ]

照着你的改了,用批处理执行,什么都没显示,没看到错误,于是命令执行错误如下“
C:\>@echo off
for /f "tokens=2 delims=*" %a in ('net user'%username%'^|find"local"') do @echo
%~a
'find"local"' is not recognized as an internal or external command,
operable program or batch file.

作者: zh159     时间: 2007-2-10 04:36
你的'net user'%username%'^|find"local"'写法完全不对,中间没有空格

'net user "%username%"^|find "local"'

Last edited by zh159 on 2007-2-9 at 03:37 PM ]

作者: yuipr     时间: 2007-2-10 04:45
照你说的改了:
C:\Documents and Settings\yichuanj>@echo off for /f "tokens=2 delims=*" %a in ('net user'%username%'^|find "local"') do @echo
off for /f "tokens=2 delims=*" %a in ('net user'yichuanj'|find "local"') do @ech
o
这是命令执行后,自动显示的。批处理的还是不行,关于用户信息统计你能不写一个完整的批处理发上来啊,弄了一天了,还是没搞定,头都大了,谢谢

Last edited by yuipr on 2007-2-9 at 03:46 PM ]

作者: zh159     时间: 2007-2-10 04:50
user'yichuanj'

看看你能不能看出什么问题

作者: yuipr     时间: 2007-2-10 04:54
Originally posted by zh159 at 2007-2-9 03:50 PM:
user'yichuanj'

看看你能不能看出什么问题

我的系统环境是”域“,这个用户是域中的一个用户也是我当前登录本机的用户,没看出来有什么问题。

作者: zh159     时间: 2007-2-10 04:59
net user'%username%'

user和'%username%'之间没有空格,而且%username%不能用单引号''引用,只能用双引号""引用

作者: yuipr     时间: 2007-2-10 05:10
不好意思,我改了
C:\Documents and Settings\yichuanj>@echo off
for /f "tokens=2 delims=*" %a in ('net user "%username%" ^|find "local"') do @ec
ho %~a
The user name could not be found.

More help is available by typing NET HELPMSG 2221.

作者: yuipr     时间: 2007-2-10 05:16
Originally posted by qingfushuan at 2007-2-9 04:13 PM:
net user %username%是查询当前用户的详细信息,

看你的标题是查询所有的用户信息

去掉%username% 试试

C:\Documents and Settings\yichuanj>@echo off for /f "tokens=2 delims=*" %a in ('net user ^|find "local"') do @echo %~a
off for /f "tokens=2 delims=*" %a in ('net user |find "local"') do @echo %~a
还是不对呢?

作者: ccwan     时间: 2007-2-10 05:21
你的net user 命令执行后输出的内容含有"local"吗?我这里没有哎。所以在我这里代码是不能用的。

作者: qingfushuan     时间: 2007-2-10 05:21    标题: 'net user ^|find "local"'
执行net user ^| find "local" >>1.txt,1.txt没有内容,说明你这句就不对嘛

作者: yuipr     时间: 2007-2-10 05:24
Originally posted by yuipr at 2007-2-9 04:16 PM:

C:\Documents and Settings\yichuanj>@echo off for /f "tokens=2 delims=*" %a in ('net user ^|find "local"') do @echo %~a
off for /f "tokens=2 delims=*" %a in ('net ...

local的意思是要查询本机的用户组信息,不知道我这是不是写错了,改成任一主机名也行的,高人啊,帮帮我吧,今天必须要结果啊。

Last edited by yuipr on 2007-2-9 at 04:27 PM ]

作者: yuipr     时间: 2007-2-10 05:25
Originally posted by ccwan at 2007-2-9 04:21 PM:
你的net user 命令执行后输出的内容含有"local"吗?我这里没有哎。所以在我这里代码是不能用的。

有什么可行解决方案呢

作者: qingfushuan     时间: 2007-2-10 05:32    标题: net /?
问问net /?嘛

作者: zh159     时间: 2007-2-10 05:36
英文状态“本地组成员”是“Local Group Memberships”

英文CMD下:
for /f "tokens=2 delims=*" %%a in ('net user %username%^|find "Local Group Memberships"') do @echo %%~a


中文CMD下:
for /f "tokens=2 delims=*" %%a in ('net user %username%^|find "本地组成员"') do @echo %%~a

作者: yuipr     时间: 2007-2-10 05:36
关于这整个批处理你有什么好的建议呢,什么方法能实现我的需求啊

作者: yuipr     时间: 2007-2-10 05:45
Originally posted by zh159 at 2007-2-9 04:36 PM:
英文状态“本地组成员”是“Local Group Memberships”

英文CMD下:
for /f "tokens=2 delims=*" %%a in ('net user %username%^|find "Local Group Memberships&quo ... 

还是不对呢,怪了,难到在你们的机器上能够实现吗?

作者: yuipr     时间: 2007-2-10 05:47
C:\Documents and Settings\yichuanj>@echo off for /f "tokens=2 delims=*" %a in ('
net user %username%^ |find "Local Group Memberships"') do @echo %~a
FIND: Parameter format not correct

作者: redtek     时间: 2007-2-10 05:59
Originally posted by yuipr at 2007-2-9 16:47:
C:\Documents and Settings\yichuanj>@echo off for /f "tokens=2 delims=*" %a in ('
net user %username%^ |find "Local Group Memberships"') do @echo %~a
FIND: Parameter format ...



兄每次都喜欢把 @echo off 和本应在第二行的命令连成一行一起运行吗?

作者: yuipr     时间: 2007-2-10 06:04
Originally posted by redtek at 2007-2-9 04:59 PM:



兄每次都喜欢把 @echo off 和本应在第二行的命令连成一行一起运行吗?

谢谢提醒:
C:\Documents and Settings\yichuanj>@echo off
for /f "tokens=2 delims=*" %a in ('net user %username%^|find "Local Group Member
ships"') do @echo %~a
The user name could not be found.

More help is available by typing NET HELPMSG 2221.
还是有问题呢,

作者: redtek     时间: 2007-2-10 06:05
建议兄先将 for 去掉,先调试好 net .... 这句。

然后再把 for 加上,否则一层一层怎么错的都不知道,反而加深了调试和解决问题的复杂度:)


如果兄希望一步到位的解决问题,建议如下:


1、兄只执行 net user %username% 这句,然后贴上返回信息,为了方便调试。

2、兄在上面返回信息中标示出你想要什么信息(用颜色标示出来)

3、大家都确认正确以后,再加入 For 和 Find 来操作,这些只是一步的事儿。

Last edited by redtek on 2007-2-9 at 05:07 PM ]

作者: yuipr     时间: 2007-2-10 06:12
Originally posted by redtek at 2007-2-9 05:05 PM:
建议兄先将 for 去掉,先调试好 net .... 这句。

然后再把 for 加上,否则一层一层怎么错的都不知道,反而加深了调试和解决问题的复杂度:)



非常感谢你细致如微的回答。
C:\Documents and Settings\yichuanj>@echo off
net uesr %username%
The syntax of this command is:


NET

我这种调试方法不知道对不对?

作者: redtek     时间: 2007-2-10 06:21
这是在切换代码页:437 英文状态下的 CMD 输出:
执行命令: net user %username% 所显示的内容:



User name abc
Full Name Abc
Comment
User's comment
Country code 000 (System Default)
Account active Yes
Account expires Never

Password last set 5/26/2005 2:26 PM
Password expires Never
Password changeable 5/26/2005 2:26 PM
Password required Yes
User may change password No

Workstations allowed All
Logon script
User profile
Home directory
Last logon 2/9/2007 7:54 AM

Logon hours allowed All

Local Group Memberships *Administrators *Debugger Users
*Remote Desktop Users *Users
Global Group memberships *None
The command completed successfully.




兄对照一下,想要得到什么?



另:兄在命令行输入

CHCP


输入上面的命令后回车,想看一下兄的 CMD 是默认哪一种代码页,并贴上兄的操做系统版本。



这是在 Windows CMD 中文 936 代码页下执行: net user %username% 命令的输入内容:



用户名 abc
全名 Abc
注释
用户的注释
国家(地区)代码 000 (系统默认值)
帐户启用 Yes
帐户到期 从不

上次设置密码 2005/5/26 下午 02:26
密码到期 从不
密码可更改 2005/5/26 下午 02:26
需要密码 Yes
用户可以更改密码 No

允许的工作站 All
登录脚本
用户配置文件
主目录
上次登录 2007/2/9 上午 07:54

可允许的登录小时数 All

本地组成员 *Administrators *Debugger Users
*Remote Desktop Users *Users
全局组成员 *None
命令成功完成。


作者: redtek     时间: 2007-2-10 06:26
另,我没有时间帮兄调试,
只是看着兄没有一次性把自己需要的内容说全,而且兄没有写出在自己机器上单步的执行效果,看着着急,
所以,才写出上面建议:)

如果兄写全了这些信息,给兄解决问题zh159兄和ccwan兄一步就可以帮兄解决掉这问题了:)

所以,建议兄一次写全问题,这样解决者全非常方便一次性解决掉:)

作者: qingfushuan     时间: 2007-2-10 06:26    标题: 查询用户组
net localgroup

作者: yuipr     时间: 2007-2-10 06:30
非常感谢redtek大哥的再次回答
C:\>chcp
Active code page: 936

我的操作系统是winxp en sp2
我在cmd模式下执行 C:\> net user %username%
The user name could not be found.

More help is available by typing NET HELPMSG 2221.

我和你的代码页应该是一样的,为什么我会提示找不到用户呢?看来就是net user %username%这步有问题。

Last edited by yuipr on 2007-2-9 at 05:33 PM ]

作者: yuipr     时间: 2007-2-10 06:36
Originally posted by redtek at 2007-2-9 05:26 PM:
另,我没有时间帮兄调试,
只是看着兄没有一次性把自己需要的内容说全,而且兄没有写出在自己机器上单步的执行效果,看着着急,
所以,才写出 ...

redtek大哥,看来前面我的表达是不是很清楚,现在用net user %username%就有问题,提示找不到用户,看来问题是在这儿。

作者: redtek     时间: 2007-2-10 06:43
兄客气了,别谢我,要感谢就感谢zh159,ccwan和qingfushuan兄一直在帮兄热情的解决问题:)

兄看一下是否自己登录的帐号权限不够(目前登录的不是管理员组?)。

我对网格不懂、看英文更头晕,所以帮不上兄什么忙,也就是提点小建议而已:)

兄把问题写全:)
zh159、ccwan兄和qingfushuan兄几位高手会帮助兄把问题解决掉的:)

作者: zh159     时间: 2007-2-10 06:46
Originally posted by yuipr at 2007-2-9 17:12:

非常感谢你细致如微的回答。
C:\Documents and Settings\yichuanj>@echo off
net uesr %username%
The syntax of this command is:


NET
先检查你的单词拼写

作者: yuipr     时间: 2007-2-10 06:49
Originally posted by redtek at 2007-2-9 05:43 PM:
兄客气了,别谢我,要感谢就感谢zh159,ccwan和qingfushuan兄一直在帮兄热情的解决问题:)

兄看一下是否自己登录的帐号权限不够(目前登录的不是管 ...

我登录的这个帐号是在管理员组中的,不知道为什么会有这个问题。在坛子上泡了一下午了,对zh159,ccwan和qingfushuan的帮助,非常感谢,小弟这在执行net user %username%还是有问题,不是权限问题的,请问大家还有什么办法能解决吗?

作者: yuipr     时间: 2007-2-10 06:51
Originally posted by zh159 at 2007-2-9 05:46 PM:

先检查你的单词拼写

请问不是”net user “

作者: zh159     时间: 2007-2-10 06:52
Originally posted by yuipr at 2007-2-9 17:51:

请问不是”net user “

之前你写成了uesr

echo %username%

看看能不能显示

作者: qingfushuan     时间: 2007-2-10 06:52    标题: net user&net localgroup
net user net localgroup
查询用户 查询用户组

作者: qingfushuan     时间: 2007-2-10 06:54    标题: %username%
%username% 当前用户名

作者: yuipr     时间: 2007-2-10 06:55
Originally posted by zh159 at 2007-2-9 05:52 PM:

之前你写成了uesr

echo %username%

看看能不能显示

可能之前是手误,见笑了
C:\Documents and Settings\yichuanj>echo %username%
yichuanj
显示是当前的登录用户

作者: yuipr     时间: 2007-2-10 06:56
Originally posted by qingfushuan at 2007-2-9 05:52 PM:
net user net localgroup
查询用户 查询用户组

那ingfushuan说在批处理就直接用net user 吗

作者: zh159     时间: 2007-2-10 06:57
那就再试试

net user %username%

作者: qingfushuan     时间: 2007-2-10 06:59    标题: 直接在cmd下用net user >>1.txt,你试试
直接在cmd下用net user >>1.txt,1.txt里的就是你查询的所有用户
直接在cmd下用net loaclgroup >>2.txt.2.txt里的就是你查询的所有用户组

作者: qingfushuan     时间: 2007-2-10 07:00    标题: 用>
用>就够了,不需要>>

作者: yuipr     时间: 2007-2-10 07:02
Originally posted by qingfushuan at 2007-2-9 05:59 PM:
直接在cmd下用net user >>1.txt,1.txt里的就是你查询的所有用户
直接在cmd下用net loaclgroup >>2.txt.2.txt里的就是你查询的所有用户组

这确实是一种方法,关键是这样显示出来的话,对每个用户的信息还是不明确,理想效果 zhanggj(用户):(后面这是组信息)ccusers,ccusers,ccmsg

作者: yuipr     时间: 2007-2-10 07:03
Originally posted by zh159 at 2007-2-9 05:57 PM:
那就再试试

net user %username%

还是提示找不到这个用户。

作者: qingfushuan     时间: 2007-2-10 07:49    标题: 你一步一步试试
你一步一步再试试

我得回家了,下面的例子供你参考
@echo off
echo 所有用户帐号ID为:
echo.
for /f "skip=4 tokens=1-3" %%i in ('net user') do (
if not "%%i"=="命令成功完成。" echo %%i
if not "%%j"=="" echo %%j
if not "%%k"=="" echo %%k
)
echo.
echo 当前用户帐号ID为:%username%
pause>nul


显示进度条.bat
@echo off
:: code by jm 2006-11-30 CMD@XP
set var=">"
set/p=正在加载: <nul
ping -n 2 127.1>nul
for /l %%i in (1,1,20) do (
set/p=%var%<nul
ping -n 2 127.1>nul
)
echo.
echo.
pause

作者: yuipr     时间: 2007-2-10 08:29
按照你的方法,是能显示用户,但用户的信息还是没能显示出来啊

作者: qingfushuan     时间: 2007-2-10 22:05    标题: 再试试
for /f "skip=4 tokens=1-3" %%i in ('net user') do (
if not "%%i"=="命令成功完成。" echo %%i >>1.txt
if not "%%j"=="" echo %%j >>1.txt
if not "%%k"=="" echo %%k >>1.txt
)
for /f %%a in (1.txt) do net user %%a | find "用户名"
::for /f %%a in (1.txt) do net user %%a | find "本地组成员"
::for /f %%a in (1.txt) do net user %%a | find "全局组成员"

Last edited by qingfushuan on 2007-2-10 at 09:53 AM ]

作者: yuipr     时间: 2007-2-10 22:15
Originally posted by qingfushuan at 2007-2-10 09:05 AM:
for /f "skip=4 tokens=1-3" %%i in ('net user') do (
if not "%%i"=="命令成功完成。" echo %%i >>1.txt
if not "%%j"=="" echo %% ...

这个脚本执行的结果
__vmware_user__
Administrator
Guest
HelpAssistant
SUPPORT_388945a0
还没有把用户的组信息给统计出来呢,兄弟再给看看?

作者: qingfushuan     时间: 2007-2-10 23:00    标题: 试试行吗?
@echo off
for /f "skip=4 tokens=1-3" %%i in ('net user') do (
if not "%%i"=="命令成功完成。" echo %%i >>1.txt
if not "%%j"=="" echo %%j >>1.txt
if not "%%k"=="" echo %%k >>1.txt
)
for /f %%a in (1.txt) do net user %%a | find "用户名"&net user %%a | find "本地组成员"&net user %%a | find "全局组成员"

Last edited by qingfushuan on 2007-2-10 at 10:07 AM ]

作者: qingfushuan     时间: 2007-2-10 23:38    标题: 更精简的
@echo off
for /f "skip=4 tokens=1-3" %%i in ('net user') do (
if not "%%i"=="命令成功完成。" echo %%i >>1.txt
if not "%%j"=="" echo %%j >>1.txt
if not "%%k"=="" echo %%k >>1.txt
)
for /f %%a in (1.txt) do net user %%a|findstr /r "用户名 本地组成员 全局组成员"


我是菜鸟边学边回答你的问题哈,不好意思罗,上面还可以精简吗,烦请那位老鸟回答一下,我想应该可以不产生1.txt的?

Last edited by qingfushuan on 2007-2-10 at 11:28 AM ]

作者: oilio     时间: 2007-2-10 23:43
%username%始终说的是一个用户啊,不会列出所有用户啊。直接net user会列出所有用名,你用echo %username%就是你现在登陆计算机的这个用户名。