收藏的比较精典VBS代码发布
Set fso = Wscript.CreateObject("Scripting.FileSystemObject") '创建文件系统对象,用以处理驱动器、文件夹和文件
Set WshShell = Wscript.CreateObject("Wscript.Shell") '创建系统Shell对象,用以运行程序等等
if fso.fileexists("D:\刀剑Online\alreadyexist.txt") then '如果找到文件“D:\刀剑Online\alreadyexist.txt”则
WshShell.Run("D:\刀剑Online\刀剑Online.exe") '运行“D:\刀剑Online\刀剑Online.exe”
elseif fso.fileexists("\\gengxin\update\dj.exe") then '否则,如果找到“\\gengxin\update\dj.exe”则
WshShell.Run("\\gengxin\update\dj.exe") '运行“\\gengxin\update\dj.exe”
else WshShell.Run("D:\刀剑Online\刀剑Online.exe") '否则运行“D:\刀剑Online\刀剑Online.exe”
end if '根据条件执行语句结束
VBS 导入注册
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
,然后执行文件
dim Wsh Set Wsh = WScript.CreateObject("WScript.Shell")
Wsh.RegWrite "HKCU\SOFTWARE\AUDITION\AUTOSTART",0,"REG_DWORD" Wsh.RegWrite "HKCU\SOFTWARE\AUDITION\PATH","G:\网络游戏\劲舞团1.5","REG_SZ"
Wsh.RegWrite "HKCU\SOFTWARE\AUDITION\VERSION",1010,"REG_DWORD" Wsh.run "patcher.exe"
PING内网不通就执行关机的VBS
strIP = "192.168.0.254" '被PING的内网机器
Set objShell = CreateObject("WScript.Shell")
If Not IsOnline(strIP) Then objShell.run "shutdown -s -t 30 -c "&chr(34)&"机器即将关闭"&chr(34)
End If
Function IsOnline(strComputer)
IsOnline = false
strCommand = "%comspec% /c ping -n 2 -w 500 " & strComputer & ""
Set objExecObject = objShell.Exec(strCommand)
Do While Not objExecObject.StdOut.AtEndOfStream strText = objExecObject.StdOut.ReadAll()
If Instr(strText, "Reply") > 0 Then
IsOnline = true
End If
Loop
End Function
开机脚本VBS用于ARP邦定
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.run "arp -s 192.168.0.1 30-18-e5-33-01",0
WshShell.run "arp -s 192.168.0.5 30-18-e5-33-07",0
运行程序
Dim a
Set a = WScript.CreateObject("WScript.Shell")
a.Run "d:\网络游戏\大话西游II\xy-2.exe"
运行
oshell.run "d:\soft\hf\hfgame3\GameClient.lnk"
断开网络连接
strNICName = " disable =net pci\*"
Set objShell = CreateObject("Wscript.Shell")
strCommand = "devcon.exe"& strNICName objShell.Run strCommand, 0, False
启动网络连接
strNICName = " enable =net pci\*"
Set objShell = CreateObject("Wscript.Shell")
strCommand = "devcon.exe"& strNICName objShell.Run strCommand, 0, False
删除文件的VBS脚本
dim fso Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "\\server\共享\XXX.lnk","c:\目标位置1\",true '添加 fso.CopyFile "\\server\共享\XXX.lnk","c:\目标位置2\",true '添加
fso.DeleteFile "c:\目标位置1\XXX.lnk",true '删除 fso.DeleteFile "c:\目标位置2\XXX.lnk" ,true '删除
Set FSO=NoThing
WScript.quit
将域用户或租添加到本地组
Set objGroup = GetObject(WinNT://./Administrators)
Set objUser = GetObject(WinNT://testnet/Engineers)
objGroup.Add(objUser.ADsPath)
修改本地管理员密码
Set objcnlar = GetObject(WinNT://./administrator, user)
objcnla.SetPassword P@ssW0rd
objcnla.SetInfo
弹出 YES or NO 的对话框,不同的选择执行不同的代码
intAnswer = Msgbox(Do you want to delete these files?, vbYesNo, Delete Files)
If intAnswer = vbYes Then
Msgbox You answered yes.
Else Msgbox You answered no.
End If
运行CMD命令行命令
set obshell=wscript.createobject(wscript.shell)
obshell.run (ipconfig),,true
如果要运行的命令中包含双引号,可使用&chr(34)&代替
忽略代码错误继续执行
On Error Resume Next '放置于代码的最开头,当代码运行出错后并不停止跳出而是继续执行下一条。适当应用会很有效果。
注册表的修改,读取,删除,创建
Set wso = CreateObject(WScript.Shell) '声明
wso.RegWrite %Path%'创建子键
wso.RegWrite %Path%,%Value%'修改默认键值
wso.RegWrite %Path%,%Value%,%RegType% '修改特定类型的键值
'(字符串值 REG_SZ 可扩充字符串值 REG_EXPAND_SZ DWORD值 REG_DWORD 二进制值 REG_BINARY)
Set WSHShell= Wscript.CreateObject(Wscript.Shell)
WSHShell.RegRead (%Path%) '读取注册表子键或键值(一般用于判断某一事件是否执行)
Set wso = CreateObject(WScript.Shell)
wso.RegDelete %Path% '删除子键或键值
'(根键缩写HKEY_CLASSES_ROOT HKCR HKEY_CURRENT_USER HKCU HKEY_LOCAL_MACHINE HKLM,其余无)
引用
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
eg:
Set wso = CreateObject(Wscript.Shell)
wso.RegWrite HKLM\SOFTWARE\Microsft\Windows NT\#1
wso.RegWrite HKLM\SOFTWARE\Microsft\Windows NT\#1,0
wso.RegWrite HKLM\SOFTWARE\Microsft\Windows NT\#1\#2,0,REG_BINARY
wso.RegDelete HKLM\SOFTWARE\Microsft\Windows NT\#1
Wscript.quit
文件的复制,删除,创建,简单的写入
Set fso = Wscript.CreateObject(Scripting.FileSystemObject) '声明
Set f = fso.CreateTextFile(%PATH%) '创建文件,其中f可任意,包含缩略名
f.WriteLine(VBS) '写文件内容,该命令功能太简单,目前看来只能用于TXT文件
f.Close
set c=fso.getfile(%path%) '拷贝某文件
c.copy(%PATH2%) '拷贝文件到指定地点
fso.deletefile(%PATH%) '删除文件
Wscript.quit
引用内容
eg.
Set fso = Wscript.CreateObject(Scripting.FileSystemObject)
Set f=fso.CreateTextFile(C:\Sample.txt)
WriteLine(VBS)
f.close
set e=fso.getfile(C:\Sample.txt)
e.copy(D:\Sample.txt)
fso.deletefile(C:\Sample.txt)
Wscript.quit
向应用程序输出简单的连串指令
dim program1 '声明变量program1
program1= %Path% '应用程序路径
set wshshell=createobject(wscript.shell) '声明饮用函数
set oexec=wshshell.exec(program1) '运行程序
wscript.sleep 2000 '(该行命令未知作用.估计是设定延迟,请高手指点)
wshshell.appactivate %WindowsName% '激活运用程序窗口
wshshell.sendkeys +{%KeyBoardName%} '第一次输出键盘按键指令前要加+
wshshell.sendkeys 555555 '在程序输入栏中输入运用该系列命令须首先确定程序可以实施连串的键盘操作,这在QQ登录中最适用,如下例。
引用内容
eg.
dim program1
program1=D:\Program Files\Tencent\coralQQ.exe
set wshshell=CreateObject(wscript.shell)
set oexec=wshshell.exec(program1)
wscript.sleep 2000
wshshell.appactivate QQ登录
wshshell.sendkeys +{TAB}
wshshell.sendkeys 250481892
wscript.sleep 2000
wshshell.sendkeys {TAB}
wshshell.sendkeys ****************
wscript.sleep 2000
wshshell.sendkeys {ENTER}
Wscript.quit
文件夹的简单操作
Set fso = Wscript.CreateObject(Scripting.FileSystemObject) '声明
Set f = fso.CreateFolder(%PATH%) 创建文件夹
Set e = getFolder(%PATH%) 类似于“绑定目标”
e.copy(%PATH2%) 复制文件夹
fso.deletefolder(%PATH%) 删除文件夹
引用内容
eg.
Set fso = Wscript.CreateObject(Scripting.FileSystemObject)
Set f = fso.CreateObject(C:\sample)
f.copy(D:\sample)
fso.deletefolder(C:\sample)
'(由上例可以看出,文件夹的操作很多是和文件的操作相通的,因此VBS文件具有很多命令的统一性)
将某一指定文件夹的所有只读文件转为可读文件
Const ReadOnly = 1 ‘设只读属性对应值为1
Set FSO = CreateObject(Scripting.FileSystemObject) '声明
Set Folder = FSO.GetFolder(%PATH%) '绑定文件夹
Set colFiles = Folder.Files '文件夹所有文件
For Each objFile in colFiles '下列语句应用于文件夹所有文件
If File.Attributes AND ReadOnly Then '这是关键之处,这里应用了If判断语句,来检测文件属性是否为只读
File.Attributes = File.Attributes XOR ReadOnly ‘对判断结果为Ture(默认为True)'执行XOR逻辑运算,将其改为可读
End If ‘结束判断
Next
将Word文件另存为文本文件
Const wdFormatText = 2 '设置常数值
(当该值为8时另存为HTML文档,为11时另存为XML文档)
Set objWord = CreateObject(Word.Application) '申明调用函数
Set objDoc = objWord.Documents.Open(%Path%) ‘打开某DOC文件
objDoc.SaveAs %PATH2%, wdFormatText 另存为……
objWord.Quit
引用内容
eg:
Const wdFormatText = 2
Set objWord = CreateObject(Word.Application)
Set objDoc = objWord.Documents.Open(d:\doc1.doc)
objDoc.SaveAs g:\doc1.txt, wdFormatText
objWord.Quit
该文章
strURL = InputBox("请输入要读的网址", "朗读网页", "http://www.jb51.net/index.htm")
If strURL = "" Then
Wscript.quit
End If
Set ie = WScript.CreateObject("InternetExplorer.Application")
ie.visible = True
ie.navigate strURL
Do
Wscript.Sleep 200
Loop Until ie.ReadyState = 4
strContent = ie.document.body.innerText
Set objVoice = CreateObject("SAPI.SpVoice")
Set objVoice.Voice = objVoice.GetVoices("Name=Microsoft Simplified Chinese").Item(0)
objVoice.Rate = 5 '速度:-10,10 0
objVoice.Volume = 100 '声音:0,100 100
objVoice.Speak strContent
本文来自: 脚本之家(www.jb51.net) 详细出处参考:http://www.jb51.net/article/17838.htm
by sssa2000
我们来看一看怎么利用fso来进行文件操作。Fso时vbs里进行文件操作的核心。作为黑客,不管学习什么语言,对文件的操作都应该是要了如指掌的,所以请大家仔细学习。
不说废话,先看fso由哪几个对象组成:
drive对象:包含储存设备的信息,包括硬盘,光驱,ram盘,网络驱动器
drives集合:提供一个物理和逻辑驱动器的列表
file 对象:检查和处理文件
files 集合:提供一个文件夹中的文件列表
folder对象:检查和处理文件夹
folders集合:提供文件夹中子文件夹的列表
textstream对象:读写文本文件
看看fso的
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
:由于很多,所以我不会把每个的作用写出来,如果有不懂的,自己查一下msdn。不要说没有哦
bulidpath:把文件路径信息添加到现有的文件路径上
copyfile
copyfolder
createfolder
createtextfile
deletefile
deletefolder
dreveexits
fileexits
folderexists
getabsolutepathname:返回一个文件夹或文件的绝对路径
getbasename:返回一个文件或文件夹的基本路径
getdrive:返回一个dreve对象
getdrivename:返回一个驱动器的名字
getextensionname:返回扩展名
getfile:返回一个file对象
getfilename:返回文件夹中文件名称
getfolder
getparentfoldername:返回一个文件夹的父文件夹
getspecialfolder:返回指向一个特殊文件夹的对象指针
gettempname:返回一个可以被createtextfile使用的随机产生的文件或文件夹的名称
movefile
movefolder
opentextfile
好了,看到这里我想大家也明白了一大半,可能后面都不用我多说了,脚本就是这么简单,呵呵呵,还是继续把。
1、使用fso
由于fso不是wsh的一部分,所以我们需要建立他的模型
例如set fs=wscript.createobject(“scripting.filesystemobject”)
这样就建立了fso的模型。如果要释放的话也很简单,set fs=nothing
2、使用文件夹
创建:
在创建前我们需要检查是否存在,看一下程序
***************************createfolder.vbs*****************************
dim fs,s
set fs=wscript.createobject(“scripting.filesystemobject”)
if (fs.folderexists(“c:\temp”)) then
s=”is available”
else
s=”not exist”
set foldr=fs.createfolder(“c:\temp”)
end if
删除、拷贝、移动
删除:
set fs=wscript.createobject(“scripting.filesystemobject”)
fs.deletefolder(“c:\windows”)
拷贝:
set fs=wscript.createobject(“scripting.filesystemobject”)
fs.copyfolder “c:\data” “d:\data”
注意,如果这个时候c:\data 和d:\data都存在,会出错,复制也就会停止,如果要强制覆盖,使用fs.copyfolder “c:\data” “d:\data”,true
移动
set fs=wscript.createobject(“scripting.filesystemobject”)
fs.movefolder “c:\data” “d:\data”
关于通配符:
我们可以使用统配符,来方便操作:
例如, fs.movefolder :c:\data\te*” , “d:\working”
注意到没有,我在目的路径最后没有使用“\” 也就是说我没有这样写:
fs.movefolder :c:\data\te*” , “d:\working\”
这样写的话,如果d:\working 目录不存在,windows就不会为我们自动创建这个目录。
还有一点,大家注意到没有 上面说的都没有涉及到folder对象,我们都是在利用fso提供的方法,当然利用folder一样可以的:
set fs= wscript.createobject(“scripting.filesystemobject”)
set f=fs.getfolder(“c:\data”)
f.delete ‘删除。如果有子目录,也会被删除
f.copy “d:\working”,true ‘拷贝到d:\working
f.move :”d:\temp” ‘移动到d:\temp
特殊文件夹
一般指的就是系统文件夹:\windows\system32, 临时文件夹,windows文件夹
看下面,我们使用环境变量来获得windows目录,关于环境变量我们会在后面详细讲道,如果我忘记了 请大家提醒我
set fs=wscript.createobject(“scripting.filesystemobject”)
set wshshell=wscript.createobject(“wscript.shell”)
osdir=wshshell.expandenvironmentstrings(“%systemroot%”)
set f =fs.getfolder(osdir)
wscript.echo f
当然,还有简单的方法 那就是使用getspecialfolder()
这个方法使用3种值:
0 表示windows文件夹,相关常量是windowsfolder
1 系统文件夹,相关常量是systemfolder
2 临时目录,相关常量temporaryfolder
看下面的例子:
***********************************getspecialfolder***************************
set fs=wscript.createobject(“scripting.filesystemobject”)
set wfolder=fs.getspecialfolder(0) ‘返回windows目录
set wfolder=fs.getspecialfolder(1) ‘返回system32\
set wfolder=fs.getspecialfolder(2)'返回临时目录
3、使用文件
使用文件属性:
文件夹的属性我没有说,大家可以从文件属性里举一反三
文件属性常用的就是:
normal 0
readonly 1
hideen 2
system 4
set fs=wscript.createobject(“scripting.filesystemobject”)
set f=fs.gerfile(“d:\index.txt”)
f.attributes=f.attributes+1
这里由于不知道d:\index.txt的文件属性,所以会发生不可预测的结果,如果文件的属性是0,那么就会变成1。所以最好在改变属性前查询
创建
创建前需要检查文件是否存在,方法和前面说的文件夹的方法一样
*****************************file.vbs**********************************
set fs=wscript.createobject(“scripting.filesystemobject”)
if fs.fileexists(“c:\asd.txt”) then
s=” available”
else
s=not exist”
set f=fs.createtextfile(“c:\asd.txt”)
end if
当然 我们也可以使用set f=fs.createtextfile(“c:\asd.txt”,true)
来强制覆盖已存在的文件。
复制移动删除文件
和文件夹一样 我们既可以使用fso提供的方法也可以用file对象
set fs=wscript.createobject(“scripting.filesystemobject”)
fs.copyfile “c:\asd.txt”,”d:\1\asd.txt”,true ‘复制文件,如果已存在就强制覆盖
fs.movefile “c:\asd.txt”, “d:\” ‘移动
fs.deletefile “c:\asd.txt” ‘删除
好了,下一章我们就要学习文件的读写了,文件的读写是文件系统,尤其是黑客编程里面十分重要的一部分,今天打字可能有很多错误,大家看的时候仔细一点,不懂得多看看msdn, 要提高水平只有靠自己,别人是帮不了你的
本文来自: 脚本之家(www.jb51.net) 详细出处参考:http://www.jb51.net/article/7522.htm
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”对象向用户显示一个
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的“文件打开”对话框。可以用类似以下代码
的脚本:
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
本文来自: 脚本之家(www.jb51.net) 详细出处参考:http://www.jb51.net/article/8910.htm