online 1
gast (50)

/ Forum / Webseiten/HTML

Webseiten/HTMLWebseiten/HTML

Fragevon peegee_de vom 29.06.2021, 10:06 Options

Links überprüfen bei OFFLINE-Datenbank ??

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


Antwort schreiben

Antwort 1 von kicia vom 29.06.2021, 18:06 Options

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.

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 ]
//-- n = 0001 (1): no folders
//-- n = 0010 (2): no files
//-- n = 0100 (4): no subfolders
//-----------------------------------------------------------------------------------
function getFiles( startfolder, n )
{
	if( !n ) n = 0;
	var fso     = new ActiveXObject("Scripting.FileSystemObject");
	var folders = new Array();
	var files   = new Array();
	if( !fso.FolderExists( startfolder ) )
	{
		msg("Folder " + startfolder + " not found!");
		return [ [],[] ];
	}
	getNext( startfolder );
	return [ folders, files ];
	
	function getNext( fld )
	{
		var folderObj = fso.getFolder( fld );
		var filesEn, foldersEn;

		if( (n & 2) == 0 )
		{
			filesEn   = new Enumerator( folderObj.Files );
			for (; !filesEn.atEnd(); filesEn.moveNext()) files.push( filesEn.item() );
		}
		if( (n & 1) == 0 )
		{
			folders.push( folderObj );
		}
		if( (n & 4) == 0 )
		{
			foldersEn = new Enumerator( folderObj.SubFolders );
			for (; !foldersEn.atEnd(); foldersEn.moveNext()) getNext( foldersEn.item().path );
		}
	}
}

//------------------------------------
//------------------------------------
function msg( s ) { WScript.Echo( s ); }

Ähnliche Themen

2 Links mit einem Klick
Harvey17  11.01.2008 - 23 Hits - 3 Antworten

HTML Dateien komplett abspeichern und offline nutzen
Marcos_  27.04.2008 - 33 Hits - 4 Antworten

Datensatz in Verbindung mit Login (Datenbank)
detommy  21.11.2008 - 30 Hits - 1 Antwort

Alle Links einer Internet-Seite anzeigen?
SeaSkander400  18.02.2009 - 161 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026