本帖最后由 yyz219 于 2025-3-2 12:57 编辑
完美解决了
| 检.lnk是否有效(拖).bat | | 2>1/* :: | | @echo off | | ::【检测:被拖文件,是文件夹 还是 文件(【文件夹】到:A,【文件】就提示)】 | | echo. | | dir/ad "%~1" >nul 2>nul&&goto :A||echo 这是文件(文件夹才行) | | pause>nul 2>nul&exit/b | | :A | | echo.%~1(目录路径)(回车打开) | | echo. | | set "目录路径=%~1" | | dir /b "%目录路径%\*.lnk"|cscript /nologo /e:jscript "%~f0" "%目录路径%" | | pause>nul 2>nul | | start "" "%~1" | | exit/b */ | | v=WSH.arguments, s=WSH.stdin, n=0 | | sF=WSH.CreateObject('Scripting.FileSystemObject') | | ws=WSH.createObject('Shell.Application'), d=ws.NameSpace(v(0)) | | while (!s.atendofstream) { | | kF=s.readline(), di = d.ParseName(kF), lnk = di.GetLink | | if (!sF.fileExists(lnk.path) && !sF.folderExists(lnk.path)) n++,WSH.echo('无效的 * .lnk :'+kF) | | } | | if (n==0) WSH.echo(v(0)+' 【*.lnk都有效】') | | WSH.quit() | | ================================== | | 运行的.bat | | 2>1/* :: | | @echo off | | echo. | | echo. | | echo.目录:延时3秒的(回车打开目录) | | echo. | | set "目录路径=D:\PE整理碎片(很好)\修改PE\启动\延时3秒的" | | dir /b "%目录路径%\*.lnk"|cscript /nologo /e:jscript "%~f0" "%目录路径%" | | pause>nul 2>nul | | start "" "D:\PE整理碎片(很好)\修改PE\启动\延时3秒的" | | exit/b */ | | v=WSH.arguments, s=WSH.stdin, n=0 | | sF=WSH.CreateObject('Scripting.FileSystemObject') | | ws=WSH.createObject('Shell.Application'), d=ws.NameSpace(v(0)) | | while (!s.atendofstream) { | | kF=s.readline(), di = d.ParseName(kF), lnk = di.GetLink | | if (!sF.fileExists(lnk.path) && !sF.folderExists(lnk.path)) n++,WSH.echo('无效的 * .lnk :'+kF) | | } | | if (n==0) WSH.echo(v(0)+' 【*.lnk都有效】') | | WSH.quit()COPY |
====================================================
原来的问题:
假设D:\579里面有不少快捷方式文件。其中,有一些是有效的,有一些是无效的。
bat能够检测.lnk是否有效吗?谢谢
(10 PE环境 没有powershell )(bat、vbs、wcs、ahk)都行 |