中国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 楼』:  



  Quote:
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 楼』:  



  Quote:
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 楼』:  



  Quote:
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之后在测试


http://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 楼』:  

是的该档案连接是有效的
连接的档案也要吗?

那我就一并上传试看看了

http://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
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: