检查批处理或vbs中是否存在快捷方式的目标?

问题描述:

这是我的问题:检查批处理或vbs中是否存在快捷方式的目标?

1º - 我有一个子文件夹的原始文件夹,充满了mp3文件

2º - 我有原来的文件夹的副本。

3º - 我已经将所有复制文件夹的“mp3”文件“转换”为“lnk”文件(使用NirCMD CLI工具)来维护文件夹结构。

现在我需要定期检查,如果每个.LNK剧照活着或目标被截断,因为我每天的维护与原来的文件夹中的是,移动文件或做一些事情......

我需要是这样的:

Echo: Corrupted links: 

For /F "tokens=*" %%# in ('Dir /B /AD') do (
    Pushd ".\%%#" 
    For /F "tokens=*" %%# in ('Dir /B "*.lnk"') do (
     (SHORTCUT_CHECK_PROGRAM_OR_FUNCTION_OR_SOMETHING.EXE) "%%#" 
     IF NOT %ErrorLevel% EQU 0 (Echo: Target doesn't exist: "%%#") 
    ) 
    POPD 
) 

我检查的参数:

mediainfo.exe 
nircmd.exe shortcut 
shortcut.exe 
Vbscripts functions to create shortcuts (i can't find one vbs only for check the target) 

但我找不到用别人的方法给我的信息对目标的捷径。

请帮助

PD:我也同意从第三方应用程序:)

PD2的解决方案:ALL .lnks的目标有这样的特殊字符拉丁文“ú”(我可以转换字符如果解决方案是批处理,其他方式我不知道如何设置字符右)

谢谢!

编辑

纳拉亚南我不知道如何使用VBA,但我给你点你的帮助,三江源。

我记得我在批处理年前创建了一个临时文件清理器,而且我也遇到了同样的问题来检查任务栏快捷方式并将其删除。

我已经解决了这个问题,但我不记得的xD

就拿这一点,如果是有人帮助:

(VBS的发送错误级别代码)

PD:它在代码西班牙语,但每个人都可以把它理解:)

:Comprobar_accesos_directos_rotos.vbs 
::Check invalid shortcuts target.vbs 
::::::::::::::::::::::::::::::::::::: 
echo set objshell = createobject("wscript.shell")>"%TEMP%\Comprobar_accesos_directos_rotos.vbs" 
echo set objlink = objshell.createshortcut(wscript.arguments(0))>>"%TEMP%\Comprobar_accesos_directos_rotos.vbs" 
echo set objfso = createobject("scripting.filesystemobject")>>"%TEMP%\Comprobar_accesos_directos_rotos.vbs" 
echo if objfso.fileexists(objlink.targetpath) then>>"%TEMP%\Comprobar_accesos_directos_rotos.vbs" 
echo wscript.quit(0)>>"%TEMP%\Comprobar_accesos_directos_rotos.vbs" 
echo else>>"%TEMP%\Comprobar_accesos_directos_rotos.vbs" 
echo wscript.quit(1)>>"%TEMP%\Comprobar_accesos_directos_rotos.vbs" 
echo end if>>"%TEMP%\Comprobar_accesos_directos_rotos.vbs" 

For /F "Tokens=*" %%a in ('dir /B /S "%appdata%\Microsoft\Windows\Start Menu\Programs\*.lnk"') do (
    Set archivo="%%a" 
    call :comprobar 
) 
Goto :END 

:Comprobar 
:::::::::: 
"%TEMP%\Comprobar_accesos_directos_rotos.vbs" %archivo% 

If %errorlevel% EQU 0 (
    goto:eof 
) ELSE (
    Del /Q /F %archivo% >nul 2>&1 
    goto:eof 
) 

:END 
pause 

再见

这样做似乎很痛苦,因为没有现成的解决方案可用于我有限的知识。

但是,如果链接的目标丢失,您可以创建一个小的可执行文件,它将返回一个错误级别。 This网页说明如何创建这样的程序。