[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 yyz219 于 2022-12-30 12:25 编辑


最佳方案:
(主要这些代码能够在PE中运行)
快捷方式所指向目标保存文本.bat
  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
————————————————————————————————————————————
问题不知道出现在哪里?谢谢
我是小白,希望老师多多帮助

weiPE 指"微PE"是吗?
原版微PE肯定是不支持WMIC的,更不支持PowerShell、VBS脚本
如果你的Win ...
WHY 发表于 2022-12-30 23:31



    非常感谢
我是小白,希望老师多多帮助

TOP

本帖最后由 WHY 于 2022-12-31 10:05 编辑
正常系统中正常

在weiPE中不行
yyz219 发表于 2022-12-30 12:22



    weiPE 指"微PE"是吗?
原版微PE肯定是不支持WMIC的,更不支持PowerShell、VBS脚本
如果你的WinPE支持VBS,那就直接用VBS脚本,没必要弄个临时文件再转成BAT

这样也许能行(前提是:你的WinPE支持mshta协议):
  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")
复制代码

TOP

WHY 发表于 2022-12-30 12:00



    正常系统中正常

在weiPE中不行
我是小白,希望老师多多帮助

TOP

WHY 发表于 2022-12-30 12:00



    辛苦了,非常感谢
我是小白,希望老师多多帮助

TOP

  1. @echo off
  2. set "Lnk=D:\桌面\Desktop\关机.lnk"
  3. for /f "delims=" %%i in ('wmic Path Win32_ShortcutFile where "Name='%Lnk:\=\\%'" get target /format:List ^| find ":"') do (
  4.     set "%%i"
  5. )
  6. echo;%target%
  7. pause
复制代码
1

评分人数

TOP

看你已解决了,还是发上来吧,应该符合你的需求,保存为BAT文件 直接运行回复  yyz219
terse 发表于 2022-12-29 11:51



   如果 前面和后面,还有代码就不行吗?
我是小白,希望老师多多帮助

TOP

看你已解决了,还是发上来吧,应该符合你的需求,保存为BAT文件 直接运行回复  yyz219
terse 发表于 2022-12-29 11:51



    非常感谢 我试一试
我是小白,希望老师多多帮助

TOP

看你已解决了,还是发上来吧,应该符合你的需求,保存为BAT文件 直接运行
  1. 1>1/* : @echo off &cscript //E:JScript //nologo "%~f0" "D:\桌面\Desktop\关机.lnk" >#.txt &exit */
  2. WSH.Echo(new ActiveXObject("WScript.Shell").CreateShortcut(WSH.Arguments(0)).TargetPath);
复制代码
回复 37# yyz219

TOP

回复  yyz219
czjt1234 发表于 2022-12-29 09:01



    非常感谢  问题解决了
我是小白,希望老师多多帮助

TOP

本帖最后由 czjt1234 于 2022-12-29 09:02 编辑

回复 32# yyz219


  
  1. s = "D:\桌面\Desktop\关机.lnk"
  2. f = "#.txt"
  3. Set oWshShell = CreateObject("WScript.Shell")
  4. Set oWshShortcut = oWshShell.CreateShortcut(s)
  5. s = oWshShortcut.TargetPath
  6. Set oFSO = CreateObject("Scripting.FileSystemObject")
  7. Set oTextStream = oFSO.OpenTextFile(f, 2, True)
  8. oTextStream.Write s
  9. oTextStream.Close()
复制代码
1

评分人数


QQ 20147578

TOP

存为bat文件
terse 发表于 2022-12-28 22:54



    运行?拖到图标?
我是小白,希望老师多多帮助

TOP

我不知道怎么使用
yyz219 发表于 2022-12-28 19:58



    存为bat文件

TOP

WScript.Shell 解决部分问题 某些情况下可以用ADODB.Stream处理一下
terse 发表于 2022-12-28 19:53



    我不知道怎么使用
我是小白,希望老师多多帮助

TOP

WScript.Shell 解决部分问题 某些情况下可以用ADODB.Stream处理一下
terse 发表于 2022-12-28 19:53



    我试一试 谢谢
我是小白,希望老师多多帮助

TOP

返回列表