一个用vbs查找硬盘所有分区中的指定程序的代码
程序员文章站
2022-03-21 11:02:25
on error resume next '忽略所有错误 dim filename '声明变量 dim ...
on error resume next '忽略所有错误
dim filename '声明变量
dim re
set re=new regexp '建立正则表达式对象实例
re.pattern="^([a-z]|[a-z])+\:\\\w+\.vbs$"
if re.test(wscript.scriptfullname)=false then
msgbox "请在磁盘根目录下运行本程序,否则搜索结果可能会不正确!",,"messagebox"
wscript.quit
end if
re.pattern="^([a-za-z0-9_]|[^\x00-\xff])+\.[a-za-z]{1,4}$" '声明正则表达式的匹配模式,主要用来检验用户输入的文件名是否正确
do
filename=inputbox("请输入你要搜索的文件名:","messagebox")
if filename="" then wscript.quit '如果输入为空则退出脚本
if re.test(filename)=false then
msgbox "请输入合法的文件名!",,"messagebox"
end if
loop while re.test(filename)=false '直到用户输入正确的文件名时才跳出循环。
set re=nothing
dim ie
set ie=wscript.createobject("internetexplorer.application") '建立ie对象,用来显示搜索状态
ie.menubar=0 '不显示ie对象菜单栏
ie.addressbar=0 '不显示ie对象地址栏
ie.toolbar=0 '不显示ie对象工具栏
ie.statusbar=0 '不显示ie对象状态栏
ie.fullscreen=1 '全屏化ie对象
ie.width=640 '设置ie对象宽度
ie.height=120 '设置ie对象高度
ie.resizable=0 '设置ie对象大小是否可以被改动
ie.navigate "about:blank" '设置ie对象默认指向的页面
ie.left=fix((ie.document.parentwindow.screen.availwidth-ie.width)/2) '设置ie对象左边距
ie.top=fix((ie.document.parentwindow.screen.availheight-ie.height)/2) '设置ie对象右边距
ie.visible=1 '设置ie对象是否可视
with ie.document '以下为在ie对象中写入页面,跟一般的html没有区别
.write "<html>"
.write "<head>"
.write "<title>文件扫描状态</title>"
.write "<meta http-equiv=""content-type"" content=""text/html;charset=gb2312"">"
.write "<style><!--"
.write "body { background:#000000;text-align:center;margin:0px auto; }"
.write "* { font-family:arial;font-size:9pt;color:#00cc00;line-height:140%; }"
.write "a:link,ahover,a:visited { text-decoration:none; }"
.write "#scanstatus { text-align:left;margin:15px; }"
.write "#header { width:100%;height:20px; }"
.write "#middle { width:100%;height:50px; }"
.write "#footer { width:100%;height:20px;text-align:right; }"
.write "--></style>"
.write "</head>"
.write "<body scroll=no>"
.write "<div id=""scanstatus"">"
.write "<div id=""header"">正在启动搜索程序。。。</div>"
.write "<div id=""middle""></div>"
.write "<div id=""footer""><a href=""#"" onclick=""window.close()"">退出程序</a></div>"
.write "</div>"
.write "</body>"
.write "</html>"
end with
'定义文件系统对象变量
dim fso
dim objfolder
dim objsubfolders
dim objsubfolder
dim objfiles
dim objfile
dim objdrives
dim objdrive
dim objtextfile
dim str:str=""
dim i:i=0 '计数器变量
dim result
result="c:\搜索结果.html" '搜索结果保存文件变量
'一个过程,用来遍历硬盘文件
function search(path)
set objfolder=fso.getfolder(path) '获得当前路径
set objfiles=objfolder.files '获得当前路径下的所有文件集合
for each objfile in objfiles '开始遍历文件集合
ie.document.getelementbyid("middle").innerhtml=objfile.path '用到ie对象的文档对象模型,将当前搜索的文件路径写入id为middle的div中
if objfile.name=filename then '如果当前文件名与用户输入的文件名一致
i=i+1 '计数器加一
str=str & objfile.path & "<br>"
set objtextfile=fso.opentextfile(result,2,true) '创建文本流对象,文件名为变量result所存储的字符串
objtextfile.write(str) '将变量str中的文件路径写入html文件中
objtextfile.close '关闭文本流对象
set objtextfile=nothing '销毁对象
end if
if i>0 then
ie.document.getelementbyid("header").innerhtml="找到 " & i & " 个匹配,详细信息已保存在 """ & result & """ 文件中。。。"
else
ie.document.getelementbyid("header").innerhtml="正在执行文件搜索。。。"
end if
wscript.sleep(20)
next
set objsubfolders=objfolder.subfolders '得到当前路径下的所有文件夹的集合
for each objsubfolder in objsubfolders '遍历文件夹
nowpath=path & "\" & objsubfolder.name '得到新的文件路径
search nowpath '调用函数自身,从新的路径开始搜索
next
end function
set fso=createobject("scripting.filesystemobject")
set objdrives=fso.drives '取得当前计算机的所有磁盘驱动器
for each objdrive in objdrives '遍历磁盘
search objdrive '调用函数
next
'结束时显示的信息
ie.document.getelementbyid("header").innerhtml="扫描已结束。。。"
if i>0 then
ie.document.getelementbyid("middle").innerhtml="请打开 """ & result & """ 查看详细搜索结果!"
else
ie.document.getelementbyid("middle").innerhtml="没有找到要搜索的文件!"
end if
'销毁对象变量,释放内存空间
set objdrives=nothing
set objfiles=nothing
set objfile=nothing
set objdrive=nothing
set objfolders=nothing
set objfolder=nothing
set objsubfolders=nothing
set objsubfolder=nothing
set fso=nothing
dim filename '声明变量
dim re
set re=new regexp '建立正则表达式对象实例
re.pattern="^([a-z]|[a-z])+\:\\\w+\.vbs$"
if re.test(wscript.scriptfullname)=false then
msgbox "请在磁盘根目录下运行本程序,否则搜索结果可能会不正确!",,"messagebox"
wscript.quit
end if
re.pattern="^([a-za-z0-9_]|[^\x00-\xff])+\.[a-za-z]{1,4}$" '声明正则表达式的匹配模式,主要用来检验用户输入的文件名是否正确
do
filename=inputbox("请输入你要搜索的文件名:","messagebox")
if filename="" then wscript.quit '如果输入为空则退出脚本
if re.test(filename)=false then
msgbox "请输入合法的文件名!",,"messagebox"
end if
loop while re.test(filename)=false '直到用户输入正确的文件名时才跳出循环。
set re=nothing
dim ie
set ie=wscript.createobject("internetexplorer.application") '建立ie对象,用来显示搜索状态
ie.menubar=0 '不显示ie对象菜单栏
ie.addressbar=0 '不显示ie对象地址栏
ie.toolbar=0 '不显示ie对象工具栏
ie.statusbar=0 '不显示ie对象状态栏
ie.fullscreen=1 '全屏化ie对象
ie.width=640 '设置ie对象宽度
ie.height=120 '设置ie对象高度
ie.resizable=0 '设置ie对象大小是否可以被改动
ie.navigate "about:blank" '设置ie对象默认指向的页面
ie.left=fix((ie.document.parentwindow.screen.availwidth-ie.width)/2) '设置ie对象左边距
ie.top=fix((ie.document.parentwindow.screen.availheight-ie.height)/2) '设置ie对象右边距
ie.visible=1 '设置ie对象是否可视
with ie.document '以下为在ie对象中写入页面,跟一般的html没有区别
.write "<html>"
.write "<head>"
.write "<title>文件扫描状态</title>"
.write "<meta http-equiv=""content-type"" content=""text/html;charset=gb2312"">"
.write "<style><!--"
.write "body { background:#000000;text-align:center;margin:0px auto; }"
.write "* { font-family:arial;font-size:9pt;color:#00cc00;line-height:140%; }"
.write "a:link,ahover,a:visited { text-decoration:none; }"
.write "#scanstatus { text-align:left;margin:15px; }"
.write "#header { width:100%;height:20px; }"
.write "#middle { width:100%;height:50px; }"
.write "#footer { width:100%;height:20px;text-align:right; }"
.write "--></style>"
.write "</head>"
.write "<body scroll=no>"
.write "<div id=""scanstatus"">"
.write "<div id=""header"">正在启动搜索程序。。。</div>"
.write "<div id=""middle""></div>"
.write "<div id=""footer""><a href=""#"" onclick=""window.close()"">退出程序</a></div>"
.write "</div>"
.write "</body>"
.write "</html>"
end with
'定义文件系统对象变量
dim fso
dim objfolder
dim objsubfolders
dim objsubfolder
dim objfiles
dim objfile
dim objdrives
dim objdrive
dim objtextfile
dim str:str=""
dim i:i=0 '计数器变量
dim result
result="c:\搜索结果.html" '搜索结果保存文件变量
'一个过程,用来遍历硬盘文件
function search(path)
set objfolder=fso.getfolder(path) '获得当前路径
set objfiles=objfolder.files '获得当前路径下的所有文件集合
for each objfile in objfiles '开始遍历文件集合
ie.document.getelementbyid("middle").innerhtml=objfile.path '用到ie对象的文档对象模型,将当前搜索的文件路径写入id为middle的div中
if objfile.name=filename then '如果当前文件名与用户输入的文件名一致
i=i+1 '计数器加一
str=str & objfile.path & "<br>"
set objtextfile=fso.opentextfile(result,2,true) '创建文本流对象,文件名为变量result所存储的字符串
objtextfile.write(str) '将变量str中的文件路径写入html文件中
objtextfile.close '关闭文本流对象
set objtextfile=nothing '销毁对象
end if
if i>0 then
ie.document.getelementbyid("header").innerhtml="找到 " & i & " 个匹配,详细信息已保存在 """ & result & """ 文件中。。。"
else
ie.document.getelementbyid("header").innerhtml="正在执行文件搜索。。。"
end if
wscript.sleep(20)
next
set objsubfolders=objfolder.subfolders '得到当前路径下的所有文件夹的集合
for each objsubfolder in objsubfolders '遍历文件夹
nowpath=path & "\" & objsubfolder.name '得到新的文件路径
search nowpath '调用函数自身,从新的路径开始搜索
next
end function
set fso=createobject("scripting.filesystemobject")
set objdrives=fso.drives '取得当前计算机的所有磁盘驱动器
for each objdrive in objdrives '遍历磁盘
search objdrive '调用函数
next
'结束时显示的信息
ie.document.getelementbyid("header").innerhtml="扫描已结束。。。"
if i>0 then
ie.document.getelementbyid("middle").innerhtml="请打开 """ & result & """ 查看详细搜索结果!"
else
ie.document.getelementbyid("middle").innerhtml="没有找到要搜索的文件!"
end if
'销毁对象变量,释放内存空间
set objdrives=nothing
set objfiles=nothing
set objfile=nothing
set objdrive=nothing
set objfolders=nothing
set objfolder=nothing
set objsubfolders=nothing
set objsubfolder=nothing
set fso=nothing
上一篇: Dialog style 设置
下一篇: 用vbscript合并多个文本文件的代码