中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-08 19:09
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助] 如何取出lnk内的实际路径 (VBS) 查看 938 回复 13
楼 主 [求助] 如何取出lnk内的实际路径 (VBS) 发表于 2008-04-01 22:41 ·  中国 台湾 宜兰县 中华电信
初级用户
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线
搜索过文批处理可用find ":\"来处理

但常常会碰到如
W
i
n
d
o
w
s
\
1
2
3
.
e
x
e
C:\
C:\windows\123.exe
上面位置不一定排序不一定
但我只要取123.exe那一行,目前判断是没办法所以想用vbs来提取看看
但vbs我不懂不知道有没有高人可以帮忙处理看看
2 发表于 2008-04-02 01:23 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
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
3 发表于 2008-04-02 02:00 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
@echo off
more "%~s1"|findstr ":\\."
pause>Nul
4 发表于 2008-04-02 02:02 ·  中国 台湾 宜兰县 中华电信
初级用户
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线
感谢

如果说要将他结果自动写入文件的话要怎么改呢?

是不是改 msgbox oShellLink.TargetPath 这一段?
5 发表于 2008-04-02 02:07 ·  中国 台湾 宜兰县 中华电信
初级用户
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线
这个是我之前写的代码,用来抓启动内的快捷

不过有部分快捷会有问题
有用第三方工具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
6 发表于 2008-04-02 02:11 ·  中国 台湾 宜兰县 中华电信
初级用户
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线
Originally posted by abcd at 2008-4-2 02:07 AM:
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 执行阶段错误
7 发表于 2008-04-02 02:19 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
@echo off
for /f "tokens=*" %%i in ('dir /b /s "%userprofile%\「开始」菜单\程序\启动\*.lnk" "%allusersprofile%\「开始」菜单\程序\启动\*.lnk" 2^>nul') do (
more "%%i"|findstr ":\\."
)
pause>Nul
8 发表于 2008-04-02 02:26 ·  中国 台湾 宜兰县 中华电信
初级用户
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线
Originally posted by abcd at 2008-4-2 02:19 AM:
@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 ":\\."就不会找到任何东西
9 发表于 2008-04-02 02:31 ·  中国 台湾 宜兰县 中华电信
初级用户
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线
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 ]
10 发表于 2008-04-02 02:41 ·  中国 台湾 宜兰县 中华电信
初级用户
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线


不过lnk档直接压缩似乎有问题的样子

我先将副档名改为lnk1,下载之后先将副档名改回lnk之后在测试


http://upload.cn-dos.net/img/210.rar

[ Last edited by sylovanas on 2008-4-2 at 02:44 AM ]
11 发表于 2008-04-02 02:51 ·  中国 台湾 宜兰县 中华电信
初级用户
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线
是的该档案连接是有效的
连接的档案也要吗?

那我就一并上传试看看了

http://upload.cn-dos.net/img/211.rar

放置的位置是在
%CommonProgramFiles%\VideoMate

这个是那个快捷连接的主档案

[ Last edited by sylovanas on 2008-4-2 at 02:52 AM ]
12 发表于 2008-04-02 03:01 ·  中国 北京 华为云
银牌会员
★★★
积分 1,436
发帖 739
注册 2007-10-11 17:44
18年会员
UID 99469
性别 男
状态 离线
发现只要快捷方式的"起始位置“为空,

用more "%~s1"|findstr ":\\."

确实不能获取路径的。

填上位置后,就可以了。

即使再次删除起始位置,一样也能找到的

[ Last edited by abcd on 2008-4-2 at 03:05 AM ]
13 发表于 2008-04-02 03:18 ·  中国 台湾 宜兰县 中华电信
初级用户
积分 107
发帖 42
注册 2007-09-03 16:43
18年会员
UID 96475
性别 男
状态 离线


真是怪

还是非常感谢abcd

这个批次要用在很多台电脑上面的,没办法说手动去增加起始位置是比较麻烦的地方

abcd也早点休息吧,太晚睡对身体不好
14 发表于 2008-05-27 13:19 ·  中国 广东 肇庆 电信
新手上路
积分 6
发帖 3
注册 2007-07-14 17:39
19年会员
UID 93978
性别 男
状态 离线
找了半天,没想到就在身边~谢谢2楼分享的.
论坛跳转: