中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 快速定位文件夹→VBS版 上一主题 | 下一主题
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『楼 主』:  快速定位文件夹→VBS版

快速定位文件夹→VBS版

快速定位注册表→VBS版 类似。

'========================Test Path
'   C:\\Program Files\\Kaspersky Lab\\Kaspersky Anti-Virus 6.0\\scieplugin.dll,101
'   D:\Program Files\QQ2007\CoralQQ.exe      
'   D:\Progra~1\QQ2007\CoralQQ.exe      
'   D:\Progra~1\QQ2007\\\\\\\           
'==========================



好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2007-4-29 18:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 2 楼』:  



  Quote:
Dim WshSHell,FSO
On Error Resume Next
Set WshSHell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
CloseTime = 5
FileName = WScript.ScriptName
FileFullName = WScript.ScriptFullName
InsPath = FSO.GetSpecialFolder(1)
InsFullName = FSO.BuildPath(InsPath ,FileName)
Copyright="玲珑科技"
QQ="QQ:25926183"
Email="Email:fty1995@163.com"
InsTitle="快速定位文件夹"
InsAnswer="快速定位文件夹"
RegPath1="HKEY_CLASSES_ROOT\CLSID\{208D2C60-3AEA-1069-A2D7-08002B30309D}\shell\QuickTo_Folder\"
RegValue1="定位文件夹(&W)"
RegForm1="REG_SZ"
RegPath2="HKEY_CLASSES_ROOT\CLSID\{208D2C60-3AEA-1069-A2D7-08002B30309D}\shell\QuickTo_Folder\command\"
RegValue2="wscript.exe "&InsFullName
RegForm2="REG_SZ"
IF FileFullName <> InsFullName then
intAnswer = MsgBox("【是】将“"+ InsAnswer +"”加入到网上邻居右键菜单,"&Chr(10)&Chr(10)&"【否】将“"+ InsAnswer +"”从网上邻居右键菜单删除。 ", vbQuestion + vbYesNoCancel, "安装 - "+ InsTitle +" - "+ Copyright)
    If intAnswer = vbYes Then
WshSHell.RegWrite RegPath1,RegValue1,RegForm1
WshSHell.RegWrite RegPath2,RegValue2,RegForm2
FSO.GetFile(FileFullName).Copy(InsFullName)
WshSHell.popup _
"添加脚本文件:"+chr(10)+InsFullName+chr(10)+chr(10)+ _
"添加注册表项:"+chr(10)+chr(34)+ RegPath1 +chr(34)+chr(10)+ _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C)  " + Copyright +"   " & QQ &"   " + Email _
, CloseTime, "安装成功 - "+ InsTitle +" - "+ Copyright, 0 + 64
end if
        If intAnswer = vbNo Then
WshSHell.RegDelete RegPath2
WshSHell.RegDelete RegPath1
FSO.DeleteFile InsFullName
WshSHell.popup _
"删除脚本文件:"+chr(10)+InsFullName+chr(10)+chr(10)+ _
"删除注册表项:"+chr(10)+chr(34)+ RegPath1 +chr(34)+chr(10)+ _
chr(10) & CloseTime & " 秒钟后本窗口将自动关闭!" +chr(10)+chr(10)+ _
chr(10) & "Copyright(C)  " + Copyright +"   " & QQ &"   " + Email _
, CloseTime, "卸载成功 - "+ InsTitle +" - "+ Copyright, 0 + 64
End If
        If intAnswer = vbCancel Then
end if
ELSE
FPathStr=UCase(CreateObject("htmlfile").parentWindow.clipboardData.getData("text"))
Do
Check = True
FPathStr = Trim(FPathStr)
FPathStr=Replace(FPathStr,chr(10),"")
FPathStr=Replace(FPathStr,chr(13),"")
FPathStr=Replace(FPathStr,"\\","\")
FPathArr=split(FPathStr,"\")
n=0
FPathTest=""
if 64 < ASC(Left(FPathStr,1)) < 91 and mid(FPathStr,2,1)=":" and mid(FPathStr,3,1)="\" then
FOR i=1 To UBound(FPathArr)
FPathTest = FSO.BuildPath(FPathTest,FPathArr(i))
FPathi=FSO.BuildPath(FPathArr(0)&"\",FPathTest)
If (FSO.FolderExists(FPathi)) Then
n=int(i)
FPath=FPathi
else
n=int(i-1)
Exit For
end if
NEXT
if n < 1 then
FolderPath=Left(FPathi,2)
else
FolderPath=FPath
end if
else
Check = False
FolderPath=Inputbox(vbcrlf & "由于剪贴板中的路径无效," & vbcrlf & vbcrlf & "请手工输入你要去的路径:","输入文件夹路径-快速定位文件夹",FPathStr)
end if
If FolderPath=False Then WScript.Quit
FPathStr = UCase(FolderPath)
Loop Until Check = True
WshSHell.Run("""" & FolderPath & """")
End If
Set WshSHell = Nothing
Set FSO = Nothing
Set Args = Nothing
WScript.Quit(0)

 

[ Last edited by baomaboy on 2008-3-25 at 12:52 AM ]

   此帖被 +6 点积分     点击查看详情   
评分人:【 lxmxn 分数: +4  时间:2007-4-29 23:19
评分人:【 abczxc 分数: +2  时间:2007-5-3 12:56




好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2007-4-29 18:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abczxc
初级用户





积分 135
发帖 53
注册 2007-4-28
状态 离线
『第 3 楼』:  快速定位文件夹→VBS版2

lz的写脚本真是犀利呀,好啊
既有添加菜单,又提供删除菜单功能,真合人意
但对于上面的脚本,有点功能和大小不成比例的感觉
下面是利用EXPLORER.EXE /SELECT的/SELECT参数写的

set wshshell = CreateObject("WScript.Shell")
file=inputbox("Which file do you want to mark?","","C:\WINDOWS\system32\")
if InStr(file,"\") then
command = "EXPLORER.EXE /SELECT," & file
wshshell.run command
else
msgbox "path err"
wscript.quit
end if

2007-5-3 12:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 4 楼』:  

首先还是要肯定一下你的感觉还是很正确的,呵呵 这里我就不在千篇一律的去解释为什么会那样了。

呵呵 如果我是为了讲一个技巧的话,连command="EXPLORER.EXE /SELECT," & file都用不到,直接WshSHell.Run file不就行了,因为我考虑到系统不是傻瓜知道自己调用EXPLORER.EXE。如果是个网址我觉得它应该会自动调用浏览器的。我没试,你可以试试看!
我的代码大多不是在讲一个技巧,而是在扩展一个技巧并能顺利在实际中应用。

也许你还不太明白VBS也许是你没仔细看,
删除卸载也不知是你读出来的还是使用时发现的,
剪贴板取值不需要代码吗,
路径字符串排错也许你没看到或没看懂,
判断路径中的有效路径这个也许你根本不知道包含在代码中吧,
也不知道你写出来会是什么样子,
不过看你昨天还发消息问我进程中"C:\WINDOWS\svchost.exe与你预计的C:\WINDOWS\SVCHOST.EXE大小写不一样该怎么解决",我告诉你用LCase或者UCase函数"你到是行,说“那大小写是随机的那将有多少组合呀,有能忽略大小写的吗“
我晕 估计这个你更写不出来了,多练些日子吧,呵呵给你推荐个师父slore,他的VBS了得。
唉 不给你解释了 也许目前你还不能明白。

[ Last edited by baomaboy on 2007-5-3 at 10:01 PM ]



好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2007-5-3 21:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 5 楼』:  

什么了得啊。。。只是会VB,VBS能顺点。。。
VB还不如认识的一个高中的朋友。。。


我不知道你用什么,replace和instr什么的字符串之类函数都可以忽略大小写……

2007-5-3 22:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 6 楼』:  

呵呵 兄就不要谦虚了。

那个怪我没说清楚,他发消息给我说:
Dim WshSHell
Set WshSHell = WScript.CreateObject("WScript.Shell"
for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process".instances_
if ps.executablepath="C:\WINDOWS\svchost.exe" then
WshSHell.Run ("ntsd -c q -p "&ps.handle),vbHide
end if
next
Set WshSHell = Nothing
WScript.Quit(0)
上面的C:\WINDOWS\svchost.exe中只要有一个大写,文件名就不同了,所就结束不了,怎么忽略大小写呀,帮帮我呀
我说加个LCase或者UCase就可以了。谁知过了会他接着问:
Dim WshSHell
Set WshSHell = WScript.CreateObject("WScript.Shell"
for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process".instances_
if ps.executablepath="C:\WINDOWS\svchost.exe" then
WshSHell.Run ("ntsd -c q -p "&ps.handle),vbHide
end if
next
Set WshSHell = Nothing
WScript.Quit(0)
上面的C:\WINDOWS\svchost.exe中只要有一个大写,文件名就不同了,所就结束不了,怎么忽略大小写呀,帮帮我呀

用LCase或者UCase函数转换一下,好像不行呀,比如:
C:\WINDOWS\svchost.exe
C:\windows\svchost.exe
C:\WINDOWS\Svchost.exe
那将有多少组合呀,有能忽略大小写的吗
麻烦下啦,大虾,帮我把原代码写一下,发给我,好吗
我会感激不尽的
起因是这个帖 批处理怎么只结束相同进程中的一个呀,谁能告诉我呀

[ Last edited by baomaboy on 2007-5-3 at 10:55 PM ]



好多菩提树,好多明镜台。本来好多物,好多的尘埃。
2007-5-3 22:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: