Board logo

标题: VBS怎样把执行结果赋值给cmd执行命令? [打印本页]

作者: jwonderful    时间: 2011-3-8 17:17     标题: VBS怎样把执行结果赋值给cmd执行命令?

  1. Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")   
  2. Set ps = objWMIService.ExecQuery("select * from Win32_Process where Name='lsass.exe'")   
  3. For Each ps in ps   
  4.     Str = Str & "" & ps.ProcessId
  5. Next
  6. WScript.Echo Str
复制代码


我用上面的 获取了lsass.exe的 进程pid

我如何吧获取的pid 赋到一个cmd命令里那 然后在运行??

下面是运行的cmd命令

  1. set objshell=createobject("wscript.shell")
  2. objshell.run("%comspec% /k net user 获取到的pid 123456 /add"),vbHide
复制代码

作者: Batcher    时间: 2011-3-8 22:20

  1. objshell.run("%comspec% /k net user " & Str & " 123456 /add"),vbHide
复制代码

作者: myzam    时间: 2011-3-9 22:58     标题: 回复 1楼 的帖子

这样更简单,不用wmi
在cmd中运行 cscript  +下列脚本

  1. set  oshell=wscript.createobject("wscript.shell")
  2. set oexec=oshell.exec("lsass.exe")
  3. pid=oexec.processID
  4. wscript.echo pid
  5. 'ok
复制代码

[ 本帖最后由 myzam 于 2011-3-9 23:05 编辑 ]
作者: jwonderful    时间: 2011-3-16 23:39     标题: 回复 2楼 的帖子

哈哈 太谢谢管理员了  原来这么简单
作者: jwonderful    时间: 2011-3-16 23:40     标题: 回复 3楼 的帖子

myzam 你写的这个貌似有问题。。。。 每次运行获取到的pid数值都是不一样的。。。。
作者: myzam    时间: 2011-3-17 01:03     标题: 回复 5楼 的帖子

要是每次运行取得的数值一样,那才有问题。
作者: CrLf    时间: 2011-3-20 11:42

既然要赋值,直接用bat就好了:
  1. for /f "tokens=." %%a in ('tasklist /nh /fi "imagename eq lsass.exe"') do (
  2.    for /f "delims=exe " %%b in ("%%a") do set pid=%%b
  3. )
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2