中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助] 如何取出lnk内的实际路径 (VBS)
作者:
标题: [求助] 如何取出lnk内的实际路径 (VBS) 上一主题 | 下一主题
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『楼 主』:  [求助] 如何取出lnk内的实际路径 (VBS)

搜索过文批处理可用find ":\"来处理 但常常会碰到如 W i n d o w s \ 1 2 3 . e x e C:\ C:\windows\123.exe 上面位置不一定排序不一定 但我只要取123.exe那一行,目前判断是没办法所以想用vbs来提取看看 但vbs我不懂不知道有没有高人可以帮忙处理看看


2008-4-1 22:41
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 2 楼』:  

set WshShell = WScript.CreateObject("WScript.Shell")
if wscript.arguments.length=0 then msgbox("请直接拖动快捷方式至其上"):wscript.quit
for each arg in wscript.arguments
  set oShellLink = WshShell.CreateShortcut(arg)
  msgbox oShellLink.TargetPath
next
set oShellLink=nothing
set Wshell=nothing


2008-4-2 01:23
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 3 楼』:  

@echo off
more "%~s1"|findstr ":\\."
pause>Nul


2008-4-2 02:00
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 4 楼』:  

感谢 如果说要将他结果自动写入文件的话要怎么改呢? 是不是改 msgbox oShellLink.TargetPath 这一段?


2008-4-2 02:02
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 5 楼』:  

这个是我之前写的代码,用来抓启动内的快捷 不过有部分快捷会有问题 有用第三方工具sed和grep dir /a/b "%startup%" >.\temp\startup1.1 for /f "tokens=*" %%a in (.\temp\startup1.1) do echo %startup%\%%a>>.\temp\startup1.2 dir /a/b "%startup1%" >.\temp\startup1.1 for /f "tokens=*" %%a in (.\temp\startup1.1) do echo %startup1%\%%a>>.\temp\startup1.2 if exist .\temp\startup1.2 for /f "tokens=*" %%a in (.\temp\startup1.2) do echo %%~a|grep -iq "\.lnk$" && ( find ":\" "%%~a"|sed -r "s/^ +//;/^.:\\/!d" >.\temp\startup1.3 echo %%~taa %%~a>>.\temp\startup1.5 for /f "tokens=*" %%g in (.\temp\startup1.3) do echo %%~tag %%~g|sed "s/.*/ => &/" >>.\temp\startup1.5 ) || (echo %%~taa %%~a)>>.\temp\startup1.5 if exist .\temp\startup1.5 sed "s/^ => .*$/&\n/" .\temp\startup1.5|more >>log.txt


2008-4-2 02:07
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 6 楼』:  

Originally posted by abcd at 2008-4-2 02:07 AM: [code]set WshShell = WScript.CreateObject("WScript.Shell") if wscript.arguments.length=0 then msgbox("请直接拖动快捷方式至其上"):wscript.quit set fso=createobject( ...
刚刚测试这一段 结果跳出 行:3 字元:1 错误:activex 元件无法产生物件: 'scripting.filesystemobjec' 程式码:800a01aD 来源:Microsoft VBScript 执行阶段错误


2008-4-2 02:11
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 7 楼』:  

@echo off
for /f "tokens=*" %%i in ('dir /b /s "%userprofile%\「开始」菜单\程序\启动\*.lnk" "%allusersprofile%\「开始」菜单\程序\启动\*.lnk" 2^>nul') do (
more "%%i"|findstr ":\\."
)
pause>Nul


2008-4-2 02:19
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 8 楼』:  

Originally posted by abcd at 2008-4-2 02:19 AM: [code]@echo off for /f "tokens=*" %%i in ('dir /b /s "%userprofile%\“开始”菜单\程序\启动\*.lnk" "%allusersprofile%\“开始”菜单\程序\启动\*.lnk" ...
感谢 这样的方式我有做过,但还是有部分快捷没有办法正确抓到。 我将没有抓到正确的内容贴上来 L  F  u P誁??iJ +00? /C:\ N 1  Program Files 2   嚝  P r o g r a m F i l e s  L 1  Common Files 0   嚝  C o m m o n F i l e s  B 1  VideoMate *   嚝  V i d e o M a t e  j 2 ComproSchedulerDTV.exe D   嚝  C o m p r o S c h e d u l e r D T V . e x e & J . . \ . . \ . . \ . . \ . . \ P r o g r a m F i l e s \ C o m m o n F i l e s \ V i d e o M a t e \ C o m p r o S c h e d u l e r D T V . e x e   ? { 这是用more lnk档|findstr "."找的 如果findstr 改成findstr ":\\."就不会找到任何东西


2008-4-2 02:26
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 9 楼』:  

Originally posted by abcd at 2008-4-2 02:22 AM: 不好意思,手误,拼写错误了。现已改正。 未测试
感谢 不过刚刚有再测试 这一次跳 行:4 字元:40 错误:无法判定字串常数的结尾 程式码:800A0409 [ Last edited by sylovanas on 2008-4-2 at 02:41 AM ]


2008-4-2 02:31
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 10 楼』:  

好 不过lnk档直接压缩似乎有问题的样子 我先将副档名改为lnk1,下载之后先将副档名改回lnk之后在测试 upload.cn-dos.net/img/210.rar [ Last edited by sylovanas on 2008-4-2 at 02:44 AM ]


2008-4-2 02:41
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 11 楼』:  

是的该档案连接是有效的 连接的档案也要吗? 那我就一并上传试看看了 upload.cn-dos.net/img/211.rar 放置的位置是在 %CommonProgramFiles%\VideoMate 这个是那个快捷连接的主档案 [ Last edited by sylovanas on 2008-4-2 at 02:52 AM ]


2008-4-2 02:51
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 12 楼』:  

发现只要快捷方式的"起始位置“为空, 用more "%~s1"|findstr ":\\." 确实不能获取路径的。 填上位置后,就可以了。 即使再次删除起始位置,一样也能找到的 [ Last edited by abcd on 2008-4-2 at 03:05 AM ]


2008-4-2 03:01
查看资料  发短消息  网志  OICQ (470237592)  编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 13 楼』:  

晕 真是怪 还是非常感谢abcd 这个批次要用在很多台电脑上面的,没办法说手动去增加起始位置是比较麻烦的地方 abcd也早点休息吧,太晚睡对身体不好


2008-4-2 03:18
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
nikekkaa
新手上路





积分 6
发帖 3
注册 2007-7-14
状态 离线
『第 14 楼』:  

找了半天,没想到就在身边~谢谢2楼分享的.


2008-5-27 13:19
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: