Well... since had no answer, had to take another approach on this.
This is basically an XYplorer script that will check in loco each and every file, assuming you started its execution having previously selected on current pane a bunch of *.lnk files. It'll do nothing in case of other files being selected, just proceed ignoring them.
I'll monitor this thread for a few days so if you have any questions, just write them.
Minor issues - it'll pop a system dialog in presence of non-existing target files (it could be avoided if I had the assistance of a regex-wise user); the lousy forth-and-back method to verify each linked file (ditto on first note).
Requires XYplorer 9.90.0402+ to run (it does the version check at starting).
Hope this helps.
Code:
//it will pop a message for each non-existing target file!
end(compare("<xyver>", '9.90.0402', 'v') < 0, "This script was tested on XYplorer v9.90.0402.<crlf>Script will now be shut.");
end(getinfo("CountSelected") < 1), "At least one file must be selected on current pane.";
$el1 = GetInfo("CountSelected");
#217; //clear clipboard - PRIOR to foreach!!!
$sfiles = get(selecteditemsnames, "|");
foreach($file, $sfiles)
{
selfilter """$file""";
$strt = <curpath>;
$tst1 = regexreplace($file, "(.*)\.(.*)", "$2");
IF ($tst1 == lnk)
{
#1048;
#1046; //go to focused .lnk target file
$tst = <curext>;
IF ($tst == lnk) { focus; backupto "<curpath>\_Broken", "<curitem>", 4; }
ELSEIF ($tst != lnk) { focus; copytext "<curitem>" . "|", a; }
goto $strt;
}
ELSEIF ($tst1 != lnk) { }
}
backupto "<curpath>\_BKP", "<clipboard>", 4;
goto "$strt\_BKP";
selectitems "<clipboard>";
$el2 = GetInfo("CountSelected");
goto "$strt\_Broken";
selfilter "*lnk";
$el3 = GetInfo("CountSelected");
$broken = get(selecteditemsnames, "<crlf>");
goto $strt;
selectitems "$broken";
text "$el1 - Number of starting links;<crlf>$el2 - Number of actually copied files.<crlf>*in case of collision with any previously existing file,<crlf>numbers will be suffixed to copies.<crlf><crlf>$el3 broken links:<crlf>$broken<crlf>*if any previously existing '.lnk' was present in the '_Broken' folder,<crlf>it will be listed too.<crlf><crlf>Have fun!", 600, 400, "Report", w;