标题: 统计用户组信息
[打印本页]
作者: 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
Quote: |
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
Quote: |
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
Quote: |
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
Quote: |
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
Quote: |
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
Quote: |
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
Quote: |
Originally posted by zh159 at 2007-2-9 04:36 PM:
英文状态“本地组成员”是“Local Group Memberships”
英文CMD下:
[code]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
Quote: |
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
Quote: |
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
Quote: |
Originally posted by redtek at 2007-2-9 05:05 PM:
建议兄先将 for 去掉,先调试好 net .... 这句。
然后再把 for 加上,否则一层一层怎么错的都不知道,反而加深了调试和解决问题的复杂度:)
[b ... |
|
非常感谢你细致如微的回答。
C:\Documents and Settings\yichuanj>@echo off
net uesr %username%
The syntax of this command is:
NET [ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |
HELPMSG | LOCALGROUP | NAME | PAUSE | PRINT | SEND | SESSION |
SHARE | START | STATISTICS | STOP | TIME | USE | USER | VIEW ]我这种调试方法不知道对不对?
作者: 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
Quote: |
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
Quote: |
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 [ ACCOUNTS | COMPUTER | CONFIG | ... |
|
先检查你的单词拼写
作者: yuipr
时间: 2007-2-10 06:49
Quote: |
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
Quote: |
Originally posted by zh159 at 2007-2-9 05:46 PM:
先检查你的单词拼写 |
|
请问不是
”net user “
作者: zh159
时间: 2007-2-10 06:52
Quote: |
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
Quote: |
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
Quote: |
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
Quote: |
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
Quote: |
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
Quote: |
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%就是你现在登陆计算机的这个用户名。