标题: [文件管理] 批处理获取快捷方式指向的路径 [打印本页]
作者: cjiabing 时间: 2009-2-21 02:26 标题: 批处理获取快捷方式指向的路径
本人发的都是原创的代码,如有雷同纯属巧合。
由于新手限制发帖,每次都只能发到代码咨询与讨论区,真是痛苦。
还有很多原创的好东东,也因为这个原因难以发上来,有空去我博客看罢了。
为避免误解在此发广告帖,就不提供博客地址了。
获取桌面上快捷方式指向的路径,以腾讯QQ2009为例。
其中主要使用到了type和find。
许多文件操作的命令都涉及到文本处理,文本处理有常常用到find命令,以前没有学过find,不懂它的意义,现在发现find和dir都是最基础和最重要的东西。- @echo off
- if exist "%ALLUSERSPROFILE%\桌面\腾讯QQ.lnk" goto 1
- if exist "%USERPROFILE%\桌面\腾讯QQ.lnk" goto 2
- exit
- :1
- type "%ALLUSERSPROFILE%\桌面\腾讯QQ.lnk">>q.txt
- goto 3
- :2
- type "%USERPROFILE%\桌面\腾讯QQ.lnk">>q.txt
- goto 3
- :3
- find /i "QQ.exe" q.txt >>a.txt
- for /f "skip=3 tokens=1,2 delims= " %%a in (a.txt) do echo %%~dpa %%~dpb>>b.txt
- del q.txt,a.txt
复制代码
重新修改了一下,否则又挨高手砖头了~!- @echo off
- set /p iput=请输入需要查找的快捷方式名称:
- ::支持模糊搜索,不需要加lnk,不支持拖拉,主要用于辅助其它代码。
- ::使用时去掉/p,并把等于号后面的内容替换为需要查找的内容即可。
- type "%USERPROFILE%\桌面\*%iput%*.lnk" | find /i "exe" | find /i "\">>找到路径.txt
- echo.
- type "%ALLUSERSPROFILE%\桌面\*%iput%*.lnk" | find /i "exe" | find /i "\">>找到路径.txt
- start 找到路径.txt
复制代码
作者: Batcher 时间: 2009-2-21 02:50
所发代码若不止一行,请务必用code标记把代码部分首尾括起来,以便他人复制;
Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html
作者: cjiabing 时间: 2009-2-21 11:10
谢谢Batcher,已经修改过来了。
作者: tireless 时间: 2009-2-21 20:07
把 .lnk 文件拖到批处理上:- @echo off
- for /f "skip=3 delims=" %%a in ('find ":\" %1') do echo %%a
- pause
复制代码
作者: cjiabing 时间: 2009-2-22 20:52
原帖由 tireless 于 2009-2-21 20:07 发表
把 .lnk 文件拖到批处理上:@echo off
for /f "skip=3 delims=" %%a in ('find ":\" %1') do echo %%a
pause
呵呵,如果用手来拖根本就不必用批处理了,直接点右键查看了。
作者: Batcher 时间: 2009-2-22 21:14 标题: 回复 5楼 的帖子
你可以试试按照他的思路修改你的代码,取消临时文件的使用。
作者: tireless 时间: 2009-3-21 22:38
发现:
more test.lnk 会分很多行显示
type test.lnk 是显示几行整行
这样可以得出快捷方式目标路径:
more test.lnk|findstr /i "^[A-Z]:\\\\"
(这里看到的)为什么要四个 \ 符号,而不是两个呢?
作者: tiandyoin 时间: 2023-9-20 10:56
回复 5# cjiabing
用手拖的意思,即是等同于把文件路径作为脚本的参数传递。
作者: REDHEARTJS 时间: 2023-12-7 14:58
看得出来作者是用心了的
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |