找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 139261|回复: 34

[文本处理] BAT如何获取开始-程序里的快捷方式的起始位置?

[复制链接]
发表于 2013-9-2 17:02:51 | 显示全部楼层 |阅读模式
要实现的结果是:查找一个exe文件所在的文件夹位置,然后把几个文件复制进这个文件夹。

现在已经有批处理的代码实现了这个结果,但是执行时间太长,大致方法是在全部盘符里查找该exe文件,然后复制几个文件到这个exe文件所在的文件夹,但是全盘搜索无论是用for f 还是用for d的速度都慢,所以想用更快捷的方法来执行。

更快捷的思路是这个exe文件必定会在开始-程序里有个快捷方式(安装这个软件必然的结果,无论是安装到哪个目录里),所以想直接由这个快捷方式的起始位置来快速定位到exe文件所在的文件夹,这样就不用全盘搜索了,应该会节省时间吧,

但现在的问题是不知道怎么获取这个在开始-程序里的这个快捷方式的起始位置(不是这个快捷方式所在的文件夹的位置),在坛里搜了搜,看到有获取桌面快捷方式的起始位置的帖子,但试着改了改,执行后得不到我想要的结果,还请有高手帮忙给个代码,谢谢!
发表于 2013-9-2 17:47:54 | 显示全部楼层
你要说出是什么程序,或许会有更快的方法。
你这样说了一大堆还不是要找出快捷方式所在位置。
发表于 2013-9-2 17:48:04 | 显示全部楼层
看到有获取桌面快捷方式的起始位置的帖子

能否分享一下这个链接?我想学习学习
 楼主| 发表于 2013-9-2 19:02:55 | 显示全部楼层
回复 2# 522235677


    1、那个exe是很少见的一种专业软件,无非就是个lnk,不用非要把文件名都列出来吧
   2、不是要这个快捷方式的位置,是快捷方式的起始位置,如果是要获取快捷方式所在的位置,根本也不用批处理来做啦。
 楼主| 发表于 2013-9-2 19:05:01 | 显示全部楼层
回复 3# DAIC


   
http://www.bathome.net/viewthrea ... C%BD%DD%B7%BD%CA%BD

另:使用搜索功能搜一下就搜到了
发表于 2013-9-2 19:12:50 | 显示全部楼层
回复 4# llqcnw


    我的意思就是快捷方式指向的位置,只是不想说的那个明确。又不是我在提问
发表于 2013-9-2 19:31:03 | 显示全部楼层
回复 5# llqcnw


    你是根据几楼的代码修改的?请把你修改之后未能得到正确结果的代码贴出来看看
 楼主| 发表于 2013-9-2 20:18:51 | 显示全部楼层
回复 7# DAIC


@echo off

for /f "delims=" %%a in ('find /i ":" QQ游戏.lnk ^| findstr /i "^[a-z]:"') do set QQfull=%%a

echo %QQfull%

echo.&pause


这个是获取桌面快捷方式的起始位置的一段代码,

“qq游戏”是我改的


执行的结果是
找不到文件-qq游戏。lnk
echo处于关闭状态
请按任意键继续
 楼主| 发表于 2013-9-2 20:20:44 | 显示全部楼层
本帖最后由 llqcnw 于 2013-9-2 20:22 编辑

回复 7# DAIC


    这段代码是我搜索后看到的一个帖子里的

http://www.bathome.net/viewthrea ... C%BD%DD%B7%BD%CA%BD

这段代码我也试了,对于桌面的快捷方式不是都好用,有的桌面快捷方式好用,有的就不好用

好用的就显示出起始位置了,不好用的就是如上那样
 楼主| 发表于 2013-9-2 20:23:55 | 显示全部楼层
回复 7# DAIC


    关键是
'find /i ":" QQ游戏.lnk ^| findstr /i "^[a-z]:"'
不明白这段代码的意思,所以只能改个文件名试试
发表于 2013-9-2 20:47:50 | 显示全部楼层
回复 10# llqcnw
  1. find /i ":" QQ游戏.lnk
复制代码
意思是在QQ游戏.lnk这个文件里面查找包含冒号的行
你得保证.bat和QQ游戏.lnk放在同一个目录下面
 楼主| 发表于 2013-9-2 20:55:01 | 显示全部楼层
回复 11# DAIC


    在lnk里查找包含冒号的行 这个我知道,应该是找出路径的那一行吧(路径里 :\里包含冒号)

  后面那个findstr语句是什么意思?
发表于 2013-9-2 21:25:21 | 显示全部楼层
回复 12# llqcnw


    查找以字母a-z开头的后面跟着一个冒号的行
 楼主| 发表于 2013-9-2 21:40:07 | 显示全部楼层
本帖最后由 llqcnw 于 2013-9-2 22:01 编辑

回复 13# DAIC


    哦,那基本明白了,

还有个问题,如果lnk文件的文件名中包含。(点)或_(下划线)或 (空格)等的要怎么处理
以及bat文件和lnk文件不在同一目录中的处理方法


我用同样的代码在两个文件夹内试验,可结果却不一样(lnk文件名做了相应的更改)

C:\Documents and Settings\All Users\「开始」菜单\程序\迅雷软件\迅雷网游加速器   在这里执行的结果是路径
C:\Documents and Settings\All Users\「开始」菜单\程序\盛大网络\龙之谷           在这里执行的结果是“ECHO处于关闭状态”不显示路径

这是为什么?
发表于 2013-9-2 23:00:43 | 显示全部楼层
回复 14# llqcnw


还有个问题,如果lnk文件的文件名中包含。(点)或_(下划线)或 (空格)等的要怎么处理

8楼的代码可以处理这个情况。如果你遇到了无法处理的,请把结果贴出来看看。
以及bat文件和lnk文件不在同一目录中的处理方法

使用完整路径
  1. find /i ":" "C:\test\QQ游戏.lnk"
复制代码
我用同样的代码在两个文件夹内试验,可结果却不一样(lnk文件名做了相应的更改)
  1. cd /d "C:\Documents and Settings\All Users\「开始」菜单\程序\盛大网络\龙之谷"
  2. dir
  3. find /i ":" *.lnk
复制代码
在CMD窗口手工依次执行上面的三个命令,把结果贴出来看看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 05:27 , Processed in 0.033273 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表