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

[其他] [已解决]帮我看下“查找快捷方式所指向目标.bat”那里出了问题,谢谢

[复制链接]
发表于 2022-12-28 08:14:43 | 显示全部楼层 |阅读模式
本帖最后由 yyz219 于 2025-3-20 20:51 编辑


最佳方案:
(主要这些代码能够在PE中运行)
方法1
  1. @echo off
  2. REM 把Lnk文件拖到这里
  3. mshta VBScript:Execute("s=CreateObject(""WScript.Shell"").CreateShortcut(""%~f1"").TargetPath:CreateObject(""Scripting.FileSystemObject"").OpenTextFile(""#.txt"",2,True).Write(s):close")
复制代码
方法2:

  1. ::【拖到这里:快捷方式所指向目标保存文本"#.txt"】
  2. @echo off
  3. >"快捷方式所指向目标保存文本.vbs" echo Set oWshShell = CreateObject("WScript.Shell")
  4. >>"快捷方式所指向目标保存文本.vbs" echo Set oWshShortcut = oWshShell.CreateShortcut("%~1")
  5. >>"快捷方式所指向目标保存文本.vbs" echo Dim fso, MyFile
  6. >>"快捷方式所指向目标保存文本.vbs" echo Set fso = CreateObject("Scripting.FileSystemObject")
  7. >>"快捷方式所指向目标保存文本.vbs" echo Set MyFile = fso.CreateTextFile("#.txt", True)
  8. >>"快捷方式所指向目标保存文本.vbs" echo MyFile.WriteLine(oWshShortcut.TargetPath)
  9. >>"快捷方式所指向目标保存文本.vbs" echo MyFile.Close

  10. 快捷方式所指向目标保存文本.vbs
  11. del /q 快捷方式所指向目标保存文本.vbs
  12. exit
复制代码
********************************
原来的问题:
查找快捷方式所指向目标.bat

  1. @echo off&setlocal enabledelayedexpansion
  2. set /p T=【右键】粘贴.lnk路径:
  3. for /f "tokens=* delims=" %%i in ('type "%T%"^|find ":"') do (
  4.       set /a n=n%%2+1
  5.       if !N! equ 2 echo %%i
  6. )
  7. pause
复制代码
要达到的效果:输入快捷方式路径(含扩展名),能够显示出快捷方式所指向目标
**********************************************************
实际情况:
1.输入:D:\桌面\Desktop\Dism++.lnk,能够正确显示
2.输入:D:\桌面\Desktop\关机.lnk,没有显示
另外,如果文件路径中有 号,也不能够正确显示(!号丢失)
*************************************************************
上面两个快捷方式实际所指向目标是:
D:\桌面\Desktop\Dism++.lnk————"D:\1绿色软件\bat批处理\C盘使用情况 -Dism++x64-.bat"
D:\桌面\Desktop\关机.lnk——————D:\1绿色软件\bat批处理\注销+重新启动\关机.bat
————————————————————————————————————————————
问题不知道出现在哪里?谢谢
发表于 2022-12-28 10:37:45 | 显示全部楼层
本帖最后由 77七 于 2022-12-28 10:39 编辑
  1. @echo off
  2. set /p T=【右键】粘贴.lnk路径:
  3. for /f "delims=" %%i in ('type %T%^|find ":"') do (
  4.     set "mubiao=%%i"
  5. )
  6. echo "%mubiao%"
  7. pause
复制代码
不知道改的对不对,我自己试了几个没问题 复制路径带上引号,如果不带就把%T%加引号

开延迟变量,!就会被省略
数学不太好...看不懂那个公式,是固定运行几次的意思?

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 感谢分享

查看全部评分

发表于 2022-12-28 10:41:14 | 显示全部楼层
试这个

  1. @echo off
  2. @rem 保存为ANSI格式
  3. for /f "tokens=* delims=" %%a in ('type "%~1"^|find ":"') do set dp=%%~a
  4. echo;%dp%
  5. pause
复制代码

评分

参与人数 2技术 +2 收起 理由
bat1152 + 1 有用!
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2022-12-28 10:44:30 | 显示全部楼层
回复 3# hfxiang


    非常感谢,试一试先
发表于 2022-12-28 10:45:54 | 显示全部楼层
补充一下,是直接拖放.lnk文件到脚本上即可,不用手工录入路径

评分

参与人数 1技术 +1 收起 理由
bat1152 + 1 利用bat的第一个参数,使lnk文件拖拽到bat上 ...

查看全部评分

 楼主| 发表于 2022-12-28 10:49:39 | 显示全部楼层
试这个
hfxiang 发表于 2022-12-28 10:41



    ! 号问题解决了
********************************
但是,对  D:\桌面\Desktop\关机.lnk  显示不对

显示:
/D:\
请按任意键继续. . .
发表于 2022-12-28 10:52:23 | 显示全部楼层
回复 6# yyz219


    请问“D:\ 桌面 \Desktop\ 关机.lnk”的快捷方式能正常正常运行吗?
 楼主| 发表于 2022-12-28 10:55:16 | 显示全部楼层
回复  yyz219


    请问“D:\ 桌面 \Desktop\ 关机.lnk”的快捷方式能正常正常运行吗?
hfxiang 发表于 2022-12-28 10:52



    能够正常运行的
 楼主| 发表于 2022-12-28 10:56:36 | 显示全部楼层
不知道改的对不对,我自己试了几个没问题 复制路径带上引号,如果不带就把%T%加引号

开延迟变量,!就会被 ...
77七 发表于 2022-12-28 10:37



    非常感谢 我试一试先
 楼主| 发表于 2022-12-28 11:01:13 | 显示全部楼层
不知道改的对不对,我自己试了几个没问题 复制路径带上引号,如果不带就把%T%加引号

开延迟变量,!就会被 ...
77七 发表于 2022-12-28 10:37



    ! 号问题解决了
********************************
但是,对  D:\桌面\Desktop\关机.lnk  显示不对

显示:
/D:\
请按任意键继续. . .
(加  引号也不能够解决问题)
发表于 2022-12-28 11:03:50 | 显示全部楼层
回复 10# yyz219

D:\桌面\Desktop\Dism++.lnk 这个正常?你重新创建“关机”的快捷方式试一试
 楼主| 发表于 2022-12-28 11:12:31 | 显示全部楼层
回复  yyz219

D:\桌面\Desktop\Dism++.lnk 这个正常?你重新创建“关机”的快捷方式试一试
77七 发表于 2022-12-28 11:03



    重新创建“关机”的快捷方  两个都正常
发表于 2022-12-28 11:28:15 | 显示全部楼层
回复 6# yyz219


打开一个CMD窗口,执行:
type "D:\桌面\Desktop\关机.lnk" | find ":\"
就会发现这个有问题的lnk文件跟其他lnk文件不一样
 楼主| 发表于 2022-12-28 11:30:42 | 显示全部楼层
回复  yyz219


打开一个CMD窗口,执行:
type "D:\桌面\Desktop\关机.lnk" | find ":\"
就会发现这个 ...
Batcher 发表于 2022-12-28 11:28



    Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>type "D:\桌面\Desktop\关机.lnk" | find ":\"
/D:\

C:\Users\Administrator>
发表于 2022-12-28 11:38:49 | 显示全部楼层
回复 10# yyz219
  1. @echo off
  2. powershell "$objShell = New-Object -ComObject WScript.Shell; $objShell.CreateShortcut('D:\桌面\Desktop\关机.lnk').TargetPath"
  3. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:30 , Processed in 0.013308 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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