|
25869
新手上路
积分 10
发帖 10
注册 2009-8-1
状态 离线
|
『楼 主』:
vbs 更改快捷方式的目标路径后,如何不改变图标?
网上找到的改变快捷方式的目标路径,可更改后,图标也变了,请问如何解决?
Sub Doit(strlnk)
Dim oShlnk
Set oShlnk = Wsh.CreateShortcut(strlnk)
If Instr(oShLnk.TargetPath,oldpath) > 0 Then
old=oShLnk.IconLocation
oShLnk.IconLocation=old '添加后无效
oShLnk.TargetPath = Replace(oShLnk.TargetPath,oldpath,newpath)
oShLnk.WorkingDirectory = Replace(oShLnk.WorkingDirectory,oldpath,newpath)
oShLnk.Save
ji_2 = ji_2 + 1
End If
Set oShLnk=NoThing
End Sub
---------------------------------------------
oldpath = "这里填写原路径中将被替换的内容"
newpath = "这里填写新路径中要使用的内容"
Dim Wsh,fso
Set Wsh = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Dim ji_1,ji_2,Folder
ji_1 = 0
ji_2 = 0
Folder = Wsh.CurrentDirectory
if Ask("将要修改"&chr(34)& Folder &chr(34)&"里的所有快捷方,是否继续") then
Dim f,fc,f1,ext
Set f = fso.GetFolder(Folder)
Set fc = f.Files
For Each f1 in fc
ext = LCase(fso.GetExtensionName(f1))
if ext = "lnk" then
ji_1 = ji_1 + 1
call Doit(f1)
end if
Next
end if
Set WSH = Nothing
msgbox "找到 "&ji_1&" 个快捷方式"&vbCrLf&"修改 "&ji_2&" 个快捷方式",64,"执行完毕!"
WScript.quit
Sub Doit(strlnk)
Dim oShlnk
Set oShlnk = Wsh.CreateShortcut(strlnk)
If Instr(oShLnk.TargetPath,oldpath) > 0 Then
oShLnk.TargetPath = Replace(oShLnk.TargetPath,oldpath,newpath)
oShLnk.WorkingDirectory = Replace(oShLnk.WorkingDirectory,oldpath,newpath)
oShLnk.Save
ji_2 = ji_2 + 1
End If
Set oShLnk=NoThing
End Sub
|
|
2009-8-7 00:45 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
2 楼』:
既然知道问题。。。
为什么不调试下。。。
msgbox old
你就知道为什么了。
还有
b=a
a=b
这样做有意义麽?
|
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore |
|
2009-8-7 01:31 |
|
|
25869
新手上路
积分 10
发帖 10
注册 2009-8-1
状态 离线
|
『第
3 楼』:
多谢指教, 我试过 wscript.echo old 得到 ",0"
我的意思是用原来的快捷方式图标, 测试后无效, 所以才发帖请教的.
old=oShLnk.IconLocation
oShLnk.IconLocation=old
|
|
2009-8-7 02:16 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
4 楼』:
你没看明白麽?
如果只有图标的索引指向的目标程序的。
这个地方
你倒来倒去没发现没做什么事麽?
b=a
a=b
如果原来指向A.exe
图标,0
你改变为B.exe
图标,0没有变。。。
显示的图标由目标决定。
如果是自定义的图标就会显示全路径
X:\XXX\XXX.EXE,2
你图标设置
oShLnk.IconLocation=oShLnk.TargetPath & oShLnk.IconLocation
但是为了通用你最好判断下。
oShLnk.IconLocation是不是只有图标索引,就是第一个字符是不是","
如果不是就不用变。
此帖被 +1 点积分 点击查看详情 评分人:【 25869 】 | 分数: +1 | 时间:2009-8-7 09:18 |
|
|
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore |
|
2009-8-7 02:46 |
|
|
25869
新手上路
积分 10
发帖 10
注册 2009-8-1
状态 离线
|
『第
5 楼』:
图标的索引指向规则不太熟悉
加上就可以了
if left(oShLnk.IconLocation,1)="," then oShLnk.IconLocation=oShLnk.TargetPath & oShLnk.IconLocation
|
|
2009-8-7 09:17 |
|
|