pcwDocLnkCheck.js

Posted 01/27/2009 - 16:41 by admin

/* Ein paar allgemeine Variablen */
var Fs = new ActiveXObject("Scripting.FileSystemObject");
var WshShell = WScript.CreateObject("WScript.Shell");
var recentdir = WshShell.SpecialFolders("Recent");
var f, fnum;
var i = 0;
var errlog = "";
 
/* Der Recent-Folder wird ermittelt:*/
f = Fs.GetFolder(recentdir);
 
/* Die Dateien im Recent-Folder werden eingelesen */
fnum = new Enumerator(f.Files);
 
/* Wenn die Datei-Erweiterung "lnk" ist, soll sich die Funktion fCheckLink um die Überprüfung kümmern */
for (;!fnum.atEnd(); fnum.moveNext())
{
 if (Fs.GetExtensionName(fnum.item()).toLowerCase() == 'lnk')  {
  fCheckLink(fnum.item());
 }
}
if (i== 0 && errlog == "") {
 WshShell.Popup("Alle Verknüpfungen in \"" + recentdir+ "\" sind in Ordnung.",0,"PC-WELT Script", 64);
 }
else WshShell.Popup(i + " veraltete Dokument-Links in \""+ recentdir + "\" gelöscht.\n" + errlog +"",0,"PC-WELT Script", 64);
 
/* Ende des linearen Scriptteils.
Die Funktion fCheckLink(pfad) schaut sich den Shortcut "pfad" genauer an.
Da es sein kann, dass auf NT/2000/XP Linkdateien mit Zugriffbeschränkung auf
NTFS Paritionen vorliegen, muss deren mögliches Auftreten von einer Error-
Exception aufgefangen werden:*/
 
function fCheckLink(pfad){
 var oShellLink
 try { oShellLink = WshShell.CreateShortcut(pfad);}
 catch(err1){ errlog = errlog +  pfad +"\nübersprungen wegen fehlender Zugriffsrechte.\n"; }
 if (!Fs.FileExists(oShellLink.TargetPath)) {
  if (!Fs.FolderExists(oShellLink.TargetPath)) { 
   try { Fs.DeleteFile(pfad);i++}
   catch(err2){ errlog = errlog +  pfad +"\nübersprungen wegen fehlender Zugriffsrechte.\n"; }
  }
 }
}