本帖最后由 yyz219 于 2025-3-20 20:51 编辑
最佳方案:
(主要这些代码能够在PE中运行)
方法1 | @echo off | | | | mshta VBScript:Execute("s=CreateObject(""WScript.Shell"").CreateShortcut(""%~f1"").TargetPath:CreateObject(""Scripting.FileSystemObject"").OpenTextFile(""#.txt"",2,True).Write(s):close")COPY |
方法2:
| ::【拖到这里:快捷方式所指向目标保存文本"#.txt"】 | | @echo off | | >"快捷方式所指向目标保存文本.vbs" echo Set oWshShell = CreateObject("WScript.Shell") | | >>"快捷方式所指向目标保存文本.vbs" echo Set oWshShortcut = oWshShell.CreateShortcut("%~1") | | >>"快捷方式所指向目标保存文本.vbs" echo Dim fso, MyFile | | >>"快捷方式所指向目标保存文本.vbs" echo Set fso = CreateObject("Scripting.FileSystemObject") | | >>"快捷方式所指向目标保存文本.vbs" echo Set MyFile = fso.CreateTextFile("#.txt", True) | | >>"快捷方式所指向目标保存文本.vbs" echo MyFile.WriteLine(oWshShortcut.TargetPath) | | >>"快捷方式所指向目标保存文本.vbs" echo MyFile.Close | | | | 快捷方式所指向目标保存文本.vbs | | del /q 快捷方式所指向目标保存文本.vbs | | exitCOPY |
********************************
原来的问题:
查找快捷方式所指向目标.bat | @echo off&setlocal enabledelayedexpansion | | set /p T=【右键】粘贴.lnk路径: | | for /f "tokens=* delims=" %%i in ('type "%T%"^|find ":\"') do ( | | set /a n=n%%2+1 | | if !N! equ 2 echo %%i | | ) | | pauseCOPY |
要达到的效果:输入快捷方式路径(含扩展名),能够显示出快捷方式所指向目标
**********************************************************
实际情况:
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
————————————————————————————————————————————
问题不知道出现在哪里?谢谢 |