vbs脚本大全,配有实例 DOS命令,批处理 脚本 代码(vbs 脚本编程)居然可以这样

随心笔谈1年前发布 编辑
137 0


 VBS 

 取得本机IP

strComputer=”.” 

Set objWMIService=GetObject(“winmgmts:\” & strComputer & “\root\cimv2”)

Set IPConfigSet=objWMIService.ExecQuery(“Select IPAddress from

Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE”)

For Each IPConfig in IPConfigSet 

If Not IsNull(IPConfig.IPAddress) Then 

For Each strAddress in IPConfig.IPAddress 

WScript.Echo strAddress 

Next 

End If 

Next  

2 取得本机计算机名 

 strComputer=”.” 

Set objWMIService=GetObject(“winmgmts:\” & strComputer & “\root\cimv2”) 

Set colComputers=objWMIService.ExecQuery(“Select * from Win32_ComputerSystem”) 

For Each objComputer in colComputers 

Wscript.Echo objComputer.Name

Next 

4 检查升级包 

 strComputer=”.” 

Set objWMIService=GetObject(“winmgmts:\” & strComputer & “\root\cimv2”) 

Set colOperatingSystems=objWMIService.ExecQuery(“Select * from Win32_OperatingSystem”) 

For Each objOperatingSystem in colOperatingSystems 

Wscript.Echo objOperatingSystem.ServicePackMajorVersion & “.” &

objOperatingSystem.ServicePackMinorVersion

Next 

5 检查 Hot Fix 

 strComputer=”.” 

Set objWMIService=GetObject(“winmgmts:\” & strComputer & “\root\cimv2”) 

Set colQuickFixes=objWMIService.ExecQuery (“Select * from Win32_QuickFixEngineering”) 

For Each objQuickFix in colQuickFixes 

Wscript.Echo “Description: ” & objQuickFix.Description 

Wscript.Echo “Hot Fix ID: ” & objQuickFix.HotFixID 

Next 

6 检查本地管理员数目 

 Set objNetwork=CreateObject(“Wscript.Network”) 

strComputer=objNetwork.ComputerName 

Set objGroup=GetObject(“WinNT://” & strComputer & “/Administrators,group”) 

For Each objUser in objGroup.Members 

Wscript.Echo objUser.Name 

Next 

7 磁盘系统 

 strComputer=”.” 

Set objWMIService=GetObject(“winmgmts:\” & strComputer & “\root\cimv2”) 

Set colDisks=objWMIService.ExecQuery(“Select * from Win32_LogicalDisk Where DriveType=

3″) 

For Each objDisk in colDisks 

Wscript.Echo “Disk drive: “& objDisk.DeviceID & ” — ” & objDisk.FileSystem 

Next 

8 检测自动登录是否开启 

 Const HKEY_LOCAL_MACHINE=&H80000002 

strComputer=”.” 

Set objReg=GetObject(“winmgmts:\” & strComputer & “\root\default:StdRegProv”) 

strKeyPath=”Software\Microsoft\Windows NT\CurrentVersion\WinLogon” 

strValueName=”AutoAdminLogon” 

objReg.GetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName,dwValue 

If dwValue=1 Then 

Wscript.Echo “Auto logon is enabled.” 

Else 

Wscript.Echo “Auto logon is disabled.” 

End If

9 关闭自动登录 

 Const HKEY_LOCAL_MACHINE=&H80000002 

strComputer=”.” 

Set objReg=GetObject(“winmgmts:\” & strComputer & “\root\default:StdRegProv”) 

strKeyPath=”Software\Microsoft\Windows NT\CurrentVersion\WinLogon” 

strValueName=”AutoAdminLogon” 

dwValue=0 

oReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dwValue 

10 检查Guest是否禁用 

 Set objNetwork=CreateObject(“Wscript.Network”) 

strComputer=objNetwork.ComputerName 

Set objUser=GetObject(“WinNT://” & strComputer & “/Guest”) 

If objUser.AccountDisabled Then 

Wscript.Echo “The Guest account is disabled.” 

Else 

Wscript.Echo “The Guest account is enabled.” 

End If 

11 关闭Guest 

 Set objNetwork=CreateObject(“Wscript.Network”) 

strComputer=objNetwork.ComputerName 

Set objUser=GetObject(“WinNT://” & strComputer & “/Guest”) 

If objUser.AccountDisabled Then 

Wscript.Echo “The Guest account is already disabled.” 

Else 

objUser.AccountDisabled=True 

objUser.SetInfo 

Wscript.Echo “The Guest account has been disabled.” 

End If 

12 检索本地共象 

 strComputer=”.” 

Set objWMIService=GetObject(“winmgmts:\” & strComputer & “\root\cimv2”) 

Set colShares=objWMIService.ExecQuery(“Select * from Win32_Share”) 

For each objShare in colShares 

Wscript.Echo “Name: ” & objShare.Name 

Wscript.Echo “Path: ” & objShare.Path 

Wscript.Echo “Type: ” & objShare.Type 

Next 

13 脚本检索一个文件夹下.txt文件 汗哦 值得学习 

 Set objWMIService=GetObject(“winmgmts:\\.\root\cimv2”)

Set colFiles=objWMIService.ExecQuery(“SELECT * FROM CIM_DataFile WHERE Path=’\\Documents

and Settings\\Administrator\\桌面\\’ AND Drive=’E:’ AND Extension=’txt'”)

Wscript.Echo “Number of .txt files found: ” & colFiles.Count 

for each aa in colFiles

NL=NL & vbcrlf & aa.name

next

Wscript.Echo NL 

14 我如何向用户显示一个用来选择文件的对话框? 

 问:

嗨,Scripting Guy!有没有什么方法可以让我使用脚本向用户显示一个对话框,供用户选择文件使用?

— BF

答:

您好,BF。如果您使用的是 Windows 2000,我们不知道实现此操作的方法,至少操作系统中没有内置这

样的方法。但如果您使用的是 Windows XP,情况就不同了。在 Windows XP 上,您可以使用

“UserAccounts.CommonDialog”对象向用户显示一个标准的“文件打开”对话框。可以用类似以下代码

的脚本:

Set objDialog=CreateObject(“UserAccounts.CommonDialog”)

objDialog.Filter=”All Files|*.*” objDialog.InitialDir=”C:” intResult=

objDialog.ShowOpen

If intResult=0 Then Wscript.Quit Else Wscript.Echo objDialog.FileName End If 

这是一个小脚本,所以让我们逐行进行解释吧。我们首先创建一个对 UserAccounts.CommonDialog 对象

的对象引用(名为“objDialog”)。接着,我们设置对话框的“筛选”属性。我们要显示所有文件,所

以我们将筛选设置成这样:

objDialog.Filter=”All Files|*.*” 

假如我们只想显示文本文件,那该怎么办?在这种情况下,我们将使用以下筛选:

objDialog.Filter=”Text Files|*.txt” 

您也许能够看出它是如何运行的:我们为文件类型提供说明 (Text Files),然后插入一个竖线分隔符

(|),最后使用标准的通配符来指示所有 .txt 文件 (*.txt)。是不是想默认显示 .txt 文件,然后为用

户提供查看所有文件的选项?那么可以使用以下代码:

objDialog.Filter=”Text Files|*.txt|All Files|*.*” 

试一试,您就明白我们的意思了。

然后,我们指定默认文件夹。默认情况下,我们希望对话框显示位于驱动器 C 的根文件夹中的文件,所

以我们这样设置“InitialDir”属性:

objDialog.InitialDir=”C:” 

希望显示 C:\Windows 文件夹中的文件吗?那么可以使用以下代码:

objDialog.InitialDir=”C:\Windows” 

不必担心:这是一个真正的“文件打开”对话框,所以您可以随意单击,并且可以随时停下来。您从

C:\Windows 开始并不意味着您只能打开该文件夹中的文件。

最后,我们使用下面这行代码显示对话框:

intResult=objDialog.ShowOpen 

现在,我们只需坐下来,等待用户选择文件并单击“确定”(或者等待用户单击“取消”)。如果用户单

击“取消”,则变量 intResult 将被设置为 0。在我们的脚本中,我们检查 intResult 的值,如果是 0

,我们将只需要使用 Wscript.Quit 来终止此脚本。

但是如果用户实际上选择了文件并单击了“确定”,那该怎么办?在这种情况下,intResult 将被设置为

-1,“FileDialog”属性将被设置为所选文件的路径名。我们的脚本只回显路径名,这意味着我们将得到

类似以下内容的输出:

C:\WINDOWS\Prairie Wind.bmp 

不用说,您并不局限于只回显文件路径。实际上,您可以使用 WMI、FileSystemObject 或一些其他技术

来绑定该文件,然后对其执行删除、复制、压缩或检索文件属性等操作 — 您对文件能够执行的操作差不

多都可以对它执行。

但无论如何,您都需要使用脚本。

顺便说一句,使用此方法,您一次只能选择一个文件,而不能按住“Ctrl”键选择多个文件。有一种方法

可以选择多个文件,至少在 XP 计算机上可以,但是我们只能将此问题留到以后的专栏中讨论了。 

15 我如何确定进程是在哪个帐户下运行的? 

 问:

嗨,Scripting Guy!我有一个脚本,它返回关于计算机上运行的所有进程的信息,只是我不知道如何获

得这些进程在其下运行的用户帐户的名称。您可以帮助我吗?

— DL

答:

您好,DL。是的,我们可以帮助您。确定进程是在哪个帐户下运行的,实际上相当简单,只是如何着手执

行此操作并不是特别显而易见的。如果您与大多数人一样,那么您可能会通过扫描 Win32_Process 类的

属性来查找名为 Account 或 UserName 或类似的属性。您很有可能找不到。出现这种情况的原因是:

Win32_Process 没有可以告诉您进程在哪个帐户下运行的属性。

您需要使用“GetOwner”方法来捕捉此信息。下面这个脚本可以告诉您 Microsoft Word (Winword.exe)

在哪个帐户下运行:

strComputer=”.”Set objWMIService=GetObject(“winmgmts:\” & strComputer & “\root\cimv2”)

Set colProcessList=objWMIService.ExecQuery _ (“Select * from Win32_Process Where Name=

‘Winword.exe'”)

For Each objProcess in colProcessList objProcess.GetOwner strUserName, strUserDomain

Wscript.Echo “Process ” & objProcess.Name & ” is owned by ” _ & strUserDomain & “” &

strUserName & “.”Next 

我们最感兴趣的是下面这行代码:

objProcess.GetOwner strNameOfUser, strUserDomain 

我们在此所做的就是调用“GetOwner”方法。GetOwner 返回两个“输出参数”,一个返回负责该进程的

用户的名称,一个返回该用户所属的域。为捕获这两个输出参数,我们需要为 GetOwner 方法提供两个变

量。在这个示例脚本中,我们使用了两个分别叫做 strUserName 和 strUserDomain 的变量。名称可以随

意选择;您可以将变量称为 A 和 B 或 X 和 Y 或任何其他您想要的名称。

不过,变量的顺序不能随意设置:返回的第一个值总是用户名,第二个值总是域。这意味着,如果您希望

用 X 表示用户名,用 Y 表示域,那么您要确保您的代码像下面这行代码一样:

objProcess.GetOwner X, Y 

调用 GetOwner 之后,我们就可直接回显进程名和所有者。请注意,我们可以稍微来点儿花样儿 – 使用

域\用户格式。这样,我们就可以回显类似于“fabrikam\kenmyer”的名称。

下面附带提供了另一个脚本,该脚本可以列出计算机上的所有进程以及各个进程的所有者:

strComputer=”.”Set objWMIService=GetObject(“winmgmts:\” & strComputer & “\root\cimv2”)

Set colProcessList=objWMIService.ExecQuery _ (“Select * from Win32_Process”)

For Each objProcess in colProcessList objProcess.GetOwner strUserName, strUserDomain

Wscript.Echo “Process ” & objProcess.Name & ” is owned by ” _ & strUserDomain & “” &

strUserName & “.”Next 

可能有人感到奇怪,2005 年 1 月 3 日正好是 Microsoft 员工的正式休息日。那么今天为什么会有“嗨

,Scripting Guy!”专栏?这只能是由于 Microsoft 脚本专家表现出来的对工作的难以置信的奉献和投

入精神。或者,也可能是由于某个脚本专家 – 还说不出他或她的名字 – 没有意识到今天是假日,所以

照常来了(而且是在早上 7 点啊!)。 

16 可以将脚本的输出复制到剪贴板吗? 

 问:

嗨,Scripting Guy!有办法将脚本输出复制到剪贴板吗?

— ZW, Marseilles, France

答:

您好,ZW.如果您不介意用一些疯狂的解决方法,那么实际上将脚本输出复制到剪贴板相当容易。首先,

您需要构造一个字符串,其中包含想要的输出。然后,创建 Internet Explorer 的一个实例,然后在其

中打开一个空白页。接着,利用 Internet Explorer 对象模型的内置功能,将字符串复制到剪贴板;特

别是, 可以使用 clipboardData.SetData 方法来实现这个技巧。将某些数据复制到剪贴板的示例脚本如

下:

strCopy=”This text has been copied to the clipboard.”

Set objIE=CreateObject(“InternetExplorer.Application”)

objIE.Navigate(“about:blank”)

objIE.document.parentwindow.clipboardData.SetData “text”, strCopy

objIE.Quit

运行脚本,然后打开 Notepad,然后单击“粘贴”;应该可以看到所复制的字符串。

顺便说一下,所有这一切都是在“幕后”发生的,Internet Explorer 并不会真的出现在屏幕上。这是因

为,在默认情况下,通过脚本创建的任何 IE 实例在运行时都是隐藏的,除非您利用如下语句将其显示出

来:

objIE.Visible=True

您可能感兴趣的文章:bat批处理 if 命令示例详解批处理 Set 命令详解 让你理解set命令批处理命令 BAT备份MySQL数据库DOS批处理之DATE命令的使用方法详解批处理技术内幕 ECHO命令介绍windows批处理命令教程批处理命令Start的使用介绍Windows运行bat批处理文件时隐藏cmd命令提示符窗口的方法批处理(bat)命令学习的一些总结批处理bat命令 获取当前盘符和当前目录和上级目录的代码批处理命令详解之目录跳转:cd

© 版权声明

相关文章