标题: 求批量修改快捷方式路径脚本
[打印本页]
作者: jiulong
时间: 2008-5-8 20:06
标题: 求批量修改快捷方式路径脚本
如题
已知路径为D:\Tencent\QQ\QQ.exe,QQGAME.exe,QQ飞车.exe.....
需要修改为D:\Netgame\QQ\QQ.exe,QQGAME.exe,QQ飞车.exe...
本人有点懒,以上内容简写请看明白,请见谅
[
Last edited by jiulong on 2008-5-8 at 08:56 PM ]
作者: lxmxn
时间: 2008-5-8 21:25
是修改 lnk 的快捷方式还是直接修改文本文件的?
作者: jiulong
时间: 2008-5-8 22:43
文件文件就好办了,难就难在快捷方式的
作者: slore
时间: 2008-5-8 22:45
用VBS……
有操作快捷方式对象
作者: jiulong
时间: 2008-5-9 14:21
VBS创建的会,修改的不会呀
作者: slore
时间: 2008-5-9 16:07
创建的那个先读取信息……
然后删除掉LNK
再创建……把之前读取的信息重写……
把路径替换下……
作者: HUNRYBECKY
时间: 2008-7-30 08:56
使用VBS可以批量实现你的要求。
Option Explicit
Dim oldpath,newpath
oldpath = "D:\Tencent" '设置原路径中将被替换的内容
newpath = "D:\Netgame" '设置新路径中要使用的内容
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.Save
ji_2 = ji_2 + 1
End If
Set oShLnk=NoThing
End Sub
Function Ask(strAction)
Dim intButton
intButton = MsgBox(strAction,vbQuestion + vbYesNo,"询问")
Ask = intButton = vbYes
End Function
作者: HUNRYBECKY
时间: 2008-7-30 09:27
但是这个快捷方式,无法处理带有参数的快捷方式,也就是替换不了参数中的路径,如D:\CATIA\B17\intel_a\code\bin\CATSTART.exe -run CNEXT.exe -env CATIA_P3.V5R17.B17 -direnv D:\CATIA\CATEnv -nowindow 中的后面的参数D:\CATIA\CATEnv 无法别替换,所以我一直在找这样的方法和工具。
作者: HUNRYBECKY
时间: 2008-8-4 08:26
你的问题我已经可以圆满的解决了,可以参考
http://www.cn-dos.net/forum/view ... id=TUH4wS#pid290700
可能需要做些修改才能适合你的需要。