Board logo

标题: 关于NET USER 的问题 [打印本页]

作者: mayamason     时间: 2006-10-9 22:04    标题: 关于NET USER 的问题

我想做个BAT去添加本地账号,但是不知道如何在命令行下修改"密码永不过期"的选项.

我的CMD是net user qgp password/add /active:yes /expires:never /passwordchg:no /passw
ordreq:yes


顺便问下如果用IF判断是否存在qgp用户应该如何操作.谢谢了.
作者: mayamason     时间: 2006-10-10 00:02
Netuser is a freeware command line / batch program that will rename a user account.

usage: netuser username <settings>

<settings>:

download from here
http://www.jsifaq.com/dl/netuser.zip

     /name:newname
     /pwnexp:{y|n}     sets Password Never Expires

Examples:

netuser Administrator /name:"My Domain Admin"

netuser "John Doe" /name:DoeJ
作者: lxmxn     时间: 2006-10-10 02:54

1、net user qgp password/add /active:yes /expires:never /passwordchg:no /passwordreq:yes

其中,红色的部分是修改密码永不过期的选项,其值可以是never,也可以指定一个日期,就是到这天就过期了,比如10/10/08。

2、可以用if判断来实现判断是否存在qgp用户是否存在。
@echo off
for /f %%i in ('net user ^| find "qgp"') do (
if not "%%i#"=="#" echo 存在qpg这个用户。& goto :lxm
)
echo 不存在qgp这个用户。
:lxm
pause
但是这个代码有一定的局限行,如果还有一个系统帐户名为qgpabc的用户的话,也会报有这个用户的。

作者: weilong888     时间: 2006-10-10 06:20
这个for与if的功能确实强大,不多试几下不能理解透切。
作者: pengfei     时间: 2006-10-10 08:37
判断帐户是否存在的两段代码:
绝对不会出错的代码:

@echo off
net user qgp >nul 2>nul && echo 存在该用户 || echo 用户不存在.
pause

有一定局限性的代码:

@echo off
set trom=1
for /f "skip=4 tokens=1-3" %%i in ('net user') do (
    if not "%%i"=="" if not "%%i"=="命令成功完成。" if "%%i"=="qgp" echo 用户存在. & set trom=2
    if not "%%j"=="" if "%%j"=="qgp" echo 用户存在. & set trom=2
    if not "%%k"=="" if "%%k"=="qgp" echo 用户存在. & set trom=2
)
if "%trom%"=="1" echo 用户不存在.
pause

作者: lxmxn     时间: 2006-10-10 09:22

pengfei兄的思路果然开阔,第一个 代码中的“net user qgp >nul 2>nul”以及“&&”和"||"使用得相当巧妙,而第二个代码也是一种比较新颖的思路~

学习中——————

作者: mayamason     时间: 2006-10-10 19:52


  Quote:
Originally posted by lxmxn at 2006-10-10 02:54:

1、net user qgp password/add /active:yes /expires:never /passwordchg:no /passwordreq:yes

其中,红色的部分是修改密码永不过期的选项,其 ...

更正一下这个EXPIRES是账号的过期时间,而不是密码的过期选项.
作者: mayamason     时间: 2006-10-10 19:53
pengfei 兄,能解释下你的第一段代码吗?
作者: pengfei     时间: 2006-10-10 23:06
第一段代码很简单, 就是使用net user来列出用户, 如果用户存在就会执行成功, 反之返回2. 利用这一点就能够非常准确地判断用户是否存在了.

而第二段代码的算法是, 列出所有的用户名, 然后判断用户是否存在. 这里有局限性是因为如果用户名有空格就会提示用户不存在.
作者: mayamason     时间: 2006-10-11 00:33
pengfei 的解释太经典了
作者: mayamason     时间: 2006-10-12 10:02
@echo off
echo Testing your network...
ping www.google.com -n 2 >nul 2>nul && echo Site1 is online || echo Site1 network down

ping www.go12ogle.com -n 2 >nul 2>nul && echo Site2 is online || echo Site2 network down

Pause


大家可以用这个代码去做测试.
作者: lxmxn     时间: 2006-10-14 02:43


  Quote:
Originally posted by pengfei at 2006-10-10 23:06:
第一段代码很简单, 就是使用net user来列出用户, 如果用户存在就会执行成功, 反之返回2. 利用这一点就能够非常准确地判断用户是否存在了.

而第二栮..


  呵呵,试了一下,不能在CMD下面建立含有空格字符的用户,但是在lusrmgr.msc里面却可以`
  
  看来WIN都做到的事情,在CMD下不一定可以做到哦``

作者: electronixtar     时间: 2006-10-14 02:44
用户名和用户全称是不一样的
作者: vkill     时间: 2006-10-14 04:13


  Quote:
Originally posted by lxmxn at 2006-10-14 02:43:


  呵呵,试了一下,不能在CMD下面建立含有空格字符的用户,但是在lusrmgr.msc里面却可以`
  
  看来WIN都做到的事情,在CMD丠...

不能建立空格的吗?  “”
作者: lxmxn     时间: 2006-10-14 12:47
RE:he200377


  呵呵,多谢提醒,忘记还可以用引号括起来了,看来我还没有做足够多的测试。

作者: hxr517     时间: 2006-10-19 09:01
呵呵~ 简单的命令怎么看着发晕呢~~