1.2k Aufrufe
Gefragt in Webseiten HTML von peegee_de Einsteiger_in (3 Punkte)
Hallo,

hätte eine Frage an Euch und hoffe, dass mir jemand weiterhelfen kann....

Mein Problem stellt sich wie folgt dar:

Wir haben uns in der Firma eine kleine "Wissensdatenbank" mit HTML aufgebaut. Diese Homepage wird aber NUR in unserem Firmennetz und nicht über das Internet betrieben. Also die entsprechenden Links liegen alle auf einem internen Netzlaufwerk.

Jetzt verändern sich ab und an die Links und sind nicht mehr verfügbar.

Gibt es ein kleines Programm (möglichst OHNE installation), das einfach mal alle Links durchprüft und ggf. anmeckert, oder gibt es eine andere Möglichkeit, die Links von Zeit zu Zeit einfach mal durchzusehen ????

Kann ganz einfach gestrickt sein, soll einfach nur sagen, geht oder geht nicht..

Hoffe, ich habe meine Frage nicht zu "böd" gestellt, aber ich bin in Sachen HTML noch bloody beginner.....

Bin für jeden Tip dankbar...
Peter

1 Antwort

0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
Ich hab da für mein letztes Projekt ein Script gemacht, welches ich Dir hier mal (etwas angepasst) reinkopiere. Vielleicht funktioniert es ja in Deinem fall auch. Ist aber etwas gepfuscht und ohne Gewähr.

Es durchsucht den als folders.tools angegebenen Ordner (und Unterordner) nach HTML-Dateien (in den meisten fällen jedenfalls),
sucht dort nach dem inhalt von href="..." und versucht eine passende Datei zu finden.
Das Ergebnis wird hier in C:/temp/outfile.txt geschrieben.

Es kommt etwas auf Deine Dateien an, u.a. ob Du auch die doppelten Anführungsstriche verwendet hast. Kannst das Script aber ja anpassen, oder sag bescheid, wenn Du Hilfe brauchst.

[code]var folders = {};
folders.tools = "C:/temp"; // ziel zum schreiben der log datei
folders.html = "C:/temp"; // die zu durchsuchenden HTML Dateien

saveFile( folders.tools + "/outfile.txt", main() );

//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
function main()
{
var links = getLinks();
return checkLinks( links ).join("\r\n");
}

//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
function checkLinks( list )
{
var fso = new ActiveXObject("Scripting.Filesystemobject");
var out = new Array();
for( var i = 0; i < list.length; i++ )
{
if( !fso.FileExists( list[i] ) )
{
out.push( "missing: " + list[i] );
}
else
{
out.push( "found: " + list[i] );
}
}
return out;
}

//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
function getPathOnly( s )
{
s = s.replace(/\\/g,"/");
s = s.substr( 0, s.lastIndexOf("/") );
return s;
}

//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
function getLinks()
{
var i = 0;
var instr = "";
var out = new Array();
var mText = new c_markedText( "", "href=\"", "\"" );
var limit = 1000;
var filesList = getFiles( folders.html )[1];

for( i = 0; i < filesList.length; i++ )
{
if( filesList[i].name.split(".")[1] == "html" )
{
instr = loadFile( filesList[i].path );
if( instr == "" ) return out;
mText.setData( instr );
mText.moveFirst();
while( mText.getText() && limit > 0 )
{
out.push( getPathOnly( filesList[i].path ) + "/" + mText.getText() );
mText.moveNext();
limit--;
}
}
}
return out;
}

//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
function c_markedText( dt, mA, mB, start )
{
var ptrA = start || -1;
var ptrB = -1;
var data = (dt + "") || "";
var markA = (mA + "") || "";
var markB = (mB + "") || "";
var lenLimit = 2000;
function setPtrB() { if( ptrA > -1 && markB.length > 0 ) ptrB = data.indexOf( markB, ptrA ); else ptrB = -1; }
function jumpToText() { if( ptrA > -1 ) ptrA += markA.length; }
this.debug = function() { return "ptrA:" + ptrA + ", ptrB:" + ptrB + ", markA:" + markA + ", markB:" + markB + ", text:" + this.getText().substr( 0, 10 ); };
this.setData = function( s ) { data = s.toString() || ""; ptrA = -1; setPtrB(); };
this.setLimit = function( n ) { lenLimit = n || lenLimit };
this.moveFirst = function() { if( markA.length > 0 ) { ptrA = data.indexOf( markA, 0 ); jumpToText(); } else { ptrA = -1; } setPtrB(); };
this.moveNext = function() { if( ptrB > -1 ) { ptrA = data.indexOf( markA, ptrB + markB.length ); jumpToText(); setPtrB(); } else ptrA = -1; };
this.moveTo = function( n ) { ptrA = data.indexOf( markA, n ); jumpToText(); setPtrB(); };
this.getText = function() { if( ptrA > -1 && ptrB > -1 && (ptrB - ptrA) < lenLimit ) return data.substring( ptrA, ptrB ); return ""; };
this.getEnd = function() { if( ptrB > -1 ) return ptrB + markB.length; return -1; };
}

//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
function loadFile(FileName)
{
var fso,f1;
var FileStr = "";
fso = new ActiveXObject("Scripting.Filesystemobject");
if(fso.FileExists(FileName))
{
f1 = fso.OpenTextFile(FileName, 1);
if(f1.AtEndOfStream) msg("ERROR: Die Datei ist leer"); else FileStr = f1.ReadAll();
f1.close();
}
else { msg("Datei nicht gefunden! --->" + FileName + ""); }
return FileStr;
}

//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
function saveFile( FileName, str )
{
var fso, folder, file, foldername;

//------
function getfoldername(s) { var i, m; for (i=0;i<s.length;i++) { if(s.substr(i,1)=="/"||s.substr(i,1)=="\\") m = i; } return s.substr(0,m); }

//------
// attributes:
// 0 Normal Normal file. No attributes are set.
// 1 ReadOnly Read-only file. Attribute is read/write.
// 2 Hidden Hidden file. Attribute is read/write.
// 4 System System file. Attribute is read/write.
// 8 Volume Disk drive volume label. Attribute is read-only.
// 16 Directory Folder or directory. Attribute is read-only.
// 32 Archive File has changed since last backup. Attribute is read/write.
// 1024 Alias Link or shortcut. Attribute is read-only.
// 2048 Compressed Compressed file. Attribute is read-only.
//------

fso = new ActiveXObject("Scripting.Filesystemobject");
foldername = getfoldername(FileName);
if(fso.FolderExists(foldername))
{
folder = fso.Getfolder(foldername);
if(folder.attributes!=16&&folder.attributes!=48)
{
msg("[savefile] kann auf Verzeichnis nicht zugreifen ---><b>" + foldername + "</b> (att:" + folder.attributes + ")");
return false;
}
if(fso.FileExists(FileName))
{
file = fso.GetFile(FileName);
if(file.attributes!=0&&file.attributes!=32)
{
msg("[savefile] kann auf Datei nicht zugreifen ---><b>" + FileName + "</b> (att:" + file.attributes + ")");
return false;
}
}
file = fso.OpenTextFile(FileName, 2, true);
file.write(str);
file.close();
}
else
{
msg("Verzeichnis nicht gefunden! ---><b>" + foldername + "</b>");
}

}

//-----------------------------------------------------------------------------------
//-- returns an array: [ array of folder objects, array of file objects ]
//--
...