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

[其他] 【已解决】bat脚本能够检测.lnk是否有效吗?谢谢

本帖最后由 yyz219 于 2025-3-2 12:57 编辑

完美解决了
  1. 检.lnk是否有效(拖).bat
  2. 2>1/* ::
  3. @echo off
  4. ::【检测:被拖文件,是文件夹 还是 文件(【文件夹】到:A,【文件】就提示)】
  5. echo.
  6. dir/ad "%~1" >nul 2>nul&&goto :A||echo  这是文件(文件夹才行)
  7. pause>nul 2>nul&exit/b
  8. :A
  9. echo.%~1(目录路径)(回车打开)
  10. echo.
  11. set "目录路径=%~1"
  12. dir /b "%目录路径%\*.lnk"|cscript /nologo /e:jscript "%~f0" "%目录路径%"
  13. pause>nul 2>nul
  14. start "" "%~1"
  15. exit/b */
  16. v=WSH.arguments, s=WSH.stdin, n=0
  17. sF=WSH.CreateObject('Scripting.FileSystemObject')
  18. ws=WSH.createObject('Shell.Application'), d=ws.NameSpace(v(0))
  19. while (!s.atendofstream) {
  20.     kF=s.readline(), di = d.ParseName(kF), lnk = di.GetLink
  21. if (!sF.fileExists(lnk.path) && !sF.folderExists(lnk.path)) n++,WSH.echo('无效的  * .lnk :'+kF)
  22. }
  23. if (n==0) WSH.echo(v(0)+' 【*.lnk都有效】')
  24. WSH.quit()
  25. ==================================
  26. 运行的.bat
  27. 2>1/* ::
  28. @echo off
  29. echo.
  30. echo.
  31. echo.目录:延时3秒的(回车打开目录)
  32. echo.
  33. set "目录路径=D:\PE整理碎片(很好)\修改PE\启动\延时3秒的"
  34. dir /b "%目录路径%\*.lnk"|cscript /nologo /e:jscript "%~f0" "%目录路径%"
  35. pause>nul 2>nul
  36. start "" "D:\PE整理碎片(很好)\修改PE\启动\延时3秒的"
  37. exit/b */
  38. v=WSH.arguments, s=WSH.stdin, n=0
  39. sF=WSH.CreateObject('Scripting.FileSystemObject')
  40. ws=WSH.createObject('Shell.Application'), d=ws.NameSpace(v(0))
  41. while (!s.atendofstream) {
  42.     kF=s.readline(), di = d.ParseName(kF), lnk = di.GetLink
  43. if (!sF.fileExists(lnk.path) && !sF.folderExists(lnk.path)) n++,WSH.echo('无效的  * .lnk :'+kF)
  44. }
  45. if (n==0) WSH.echo(v(0)+' 【*.lnk都有效】')
  46. WSH.quit()
复制代码

====================================================
原来的问题:
假设D:\579里面有不少快捷方式文件。其中,有一些是有效的,有一些是无效的。
bat能够检测.lnk是否有效吗?谢谢
(10 PE环境  没有powershell )(bat、vbs、wcs、ahk)都行
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
我是小白,希望老师多多帮助

本帖最后由 aloha20200628 于 2025-3-1 14:03 编辑

回复 1# yyz219

以下代码存为 test.bat 运行,检测快捷方式的有效性是基于其目标路径的真伪...
  1. 2>1/* ::
  2. @echo off &dir /b "D:\579\*.lnk"|cscript /nologo /e:jscript "%~f0" "D:\579"
  3. pause&exit/b */
  4. v=WSH.arguments, s=WSH.stdin, n=0
  5. sF=WSH.CreateObject('Scripting.FileSystemObject')
  6. ws=WSH.createObject('Shell.Application'), d=ws.NameSpace(v(0))
  7. while (!s.atendofstream) {
  8.     kF=s.readline(), di = d.ParseName(kF), lnk = di.GetLink
  9.     if (!sF.fileExists(lnk.path) && !sF.folderExists(lnk.path)) n++,WSH.echo('发现无效或系统内置快捷方式》'+kF)
  10. }
  11. if (n==0) WSH.echo(v(0)+' 目录中未发现可疑的快捷方式')
  12. WSH.quit()
复制代码
1

评分人数

TOP

本帖最后由 yyz219 于 2025-3-1 18:49 编辑

回复 2# aloha20200628
谢谢   我需要慢慢琢磨
我是小白,希望老师多多帮助

TOP

返回列表