113. Cassandra - eine Desktopsuchmaschine aus Batch, VBS und HTA zum Suchen in bat, htm und txt - Dokumenten

Nachtrag 08.07.2012.

Diese Abhandlung ist veraltet, aber da die Webseite des Sternenhimmelstuermers sein Tagebuch ist, wird nichts gelöscht. Cassandra wurde durch das Projekt Merlin abgelöst. Merlin beinhaltet Frames, die Fähigkeit zur Archivierung und kann dank eines ausgeklügelten Systems die Lage von sich selbst bestimmen. Die Frames werden nun nur noch neu geladen, die Hauptanwendung nicht. Es gibt eine Reloadtaste, um zu Inhaltslisten zurückzuspringen...Das Projekt Merlin wird dann auch die Stammseite werden. Eine Erklärung für Anfänger mit der letzten Version von Merlin, die auch doc und docx-Dokumente mit einem Index durchsucht gibt es hier.


Cassandra war eine Seherin, die ein schlimmes Ende nahm, weil niemand auf Sie hörte..., ganz im Gegenteil dazu findet die programmierte Cassandra vom Sternenhimmelstuermer zur Zeit Dokumente im Format htm, html, bat und txt. und durchsucht Sie nach Textinhalten. Also keine wirkliche Konkurrenz zur Google Desktop Software, mit der Sie auf Ihrem PC Dateien im Google-Style finden.

Die Suchmaschine vom Sternenhimmelstuermer ist dafür nur 8 KB groß, hat auch ausführbare Links der gefundenen Wörter und zeigt eine Zeile des Inhalts der Datei an. Die Suchmaschine basiert auf dem Befehl findstr. , ist saumäßig schnell, und diskret.
Der Sternenhimmelstuermer gab sich ein wenig mehr Mühe und konstruierte ein deutsches Userinterface (GUI). Es werden einzelne Wörter oder Zeichenketten Wort bzw. zeilengenau abgeprüft. Groß- und Kleinschreibung sind egal.

Worddokumente und PDF sind leider Tabu. Wie man schnell Worddokumente durch einen kleinen Trick mit einem Makro zu hunderten in Textdokumente konvertiert, wird kurz erklärt. So könnten Firmen, die auf Diskretion stehen, sich einen indirekten Index erstellen...

Für den Sternenhimmelstuermer reicht die Batch und Darstellungsweise, um sich durch seine hunderte HTML-Dokumente durchzukämpfen.

Dann programmierte der Sternenhimmelstuermer eine Erweiterung mit zwei Suchfeldern. Im zweiten Suchfeld kann man spezifisch mit Namen und Dateierweiterung, z. B. NamederDatei.pdf. Dateien anhand des Dateinamens suchen. Ja, alle Dateinamen  und Endungen sind erlaubt. Oder mit einer Wildcard wie *.pdf alle PDF-Dokumente mit Namen und Größe auflisten und als ausführbare Liste ansehen. Diese Features gehen nur mit der 18 KB großen  Erweiterung von Cassandra, die wie gesagt zwei Eingabefenster hat.

Inhaltsangabe
Voraussetzungen
Batch
Erklärung
Einen Index mit Textdokumenten aus Worddokumenten erstellen (Makro- auch zur Konvertierung in andere Formate mit Word in Stapelverarbeitung möglich.
Erweiterung der Batch zum Suchen nach beliebigen Dateinamen oder Erstellung von Dateilisten
Fazit

Nachtrag Merlin: Die Suchmaschine mit Frames stark verbessert


Voraussetzungen

VBS (Visual Basic Script) muss ebenso wie HTA (HTML-Application) erlaubt sein. Die Batch funktioniert nur mit dem Internet Explorer (keine Sorge, die Suche und alles andere läuft allein auf ihrem PC , aber eine HTA ist nun einmal eine Instanz des Internet Explorers...Der Name cassandra.hta ist Pflicht! Ansonsten können Sie mit Suchen und Ersetzen alle cassandra-Einträge umbenennen. Die Batch legen Sie in das oberste Verzeichnis/Ordner ihres Dokumentenordners. Relativ in einem Ordner ist genauso möglich.
Ganz oben im Verzeichnis C:? wäre unsinnig, da sämtliche Unterordner durchwühlt werden. Ansonsten ist die Batch sauschnell und sämtliche gefundenen Einträge in Dateien werden erfasst...

Die HTA wird dann geschlossen, die Suchtreffer in die HTA geschrieben und die HTA wieder geöffnet. Natürlich mit neuer Suchmaske, um eine neue Suche zu starten. Ach ja, nach der ersten Abfrage liegt auch eine HTA in ihrem Ordner. Sie können die HTA oder Batch dann beliebig starten, aber die HTA wird immer die Batch benötigen. Das heißt, dass Sie die Batch immer verschieben können, aber die HTA eben nicht, da Sie allein nur das Interface (GUI) darstellt...

Batch

Name cassandra.bat

If exist cassandra.hta goto Finden
set destination=%~dp0%
>"%destination%cassandra.hta"  ECHO ^<html^>
>>"%destination%cassandra.hta" ECHO ^<head^>
>>"%destination%cassandra.hta" ECHO ^<title^>HTA Hilfe für Batchschreiber^</title^>
>>"%destination%cassandra.hta" ECHO ^<HTA:APPLICATION
>>"%destination%cassandra.hta" ECHO         APPLICATIONNAME="HTAHilfe"
>>"%destination%cassandra.hta" ECHO     SCROLL="yes"
>>"%destination%cassandra.hta" ECHO     SINGLEINSTANCE="yes"
>>"%destination%cassandra.hta" ECHO     WINDOWSTATE="maximize"
>>"%destination%cassandra.hta" ECHO ^>
>>"%destination%cassandra.hta" ECHO ^<style type="text/css"^>
>>"%destination%cassandra.hta" ECHO a {color:#FFFF33; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%cassandra.hta" ECHO a:hover {color:#FF0000; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%cassandra.hta" ECHO a.menu1 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%cassandra.hta" ECHO a.menu1:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%cassandra.hta" ECHO a.menu2 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%cassandra.hta" ECHO a.menu2:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%cassandra.hta" ECHO ^</style^>
>>"%destination%cassandra.hta" ECHO ^</head^>
>>"%destination%cassandra.hta" ECHO ^<SCRIPT Language="VBScript"^>
>>"%destination%cassandra.hta" ECHO Sub RunScript
>>"%destination%cassandra.hta" ECHO     Set objFSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%cassandra.hta" ECHO     objFSO.CreateTextFile("suchwort.log")
>>"%destination%cassandra.hta" ECHO     Set objFile = objFSO.OpenTextFile("suchwort.log", 2)
>>"%destination%cassandra.hta" ECHO     objFile.WriteLine  BasicTextBox.Value
>>"%destination%cassandra.hta" ECHO objFile.Close
>>"%destination%cassandra.hta" ECHO dim shell
>>"%destination%cassandra.hta" ECHO set shell = createobject("wscript.shell")
>>"%destination%cassandra.hta" ECHO shell.run """cassandra.bat"""
>>"%destination%cassandra.hta" ECHO self.close()
>>"%destination%cassandra.hta" ECHO End Sub
>>"%destination%cassandra.hta" ECHO ^</SCRIPT^>
>>"%destination%cassandra.hta" ECHO ^<body style="color: white; background-color: black;" alink="red"
>>"%destination%cassandra.hta" ECHO link="yellow" vlink="#3333ff"^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<center^>^<div^>^<big^>^<big^>^<big^>^<span style="color: red;"^>^&^#x8CEC; cassandra ^&^#x8CEC;^</span^>^</big^>^</big^>^</big^>^</div^>^<c/enter^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<div^>^<input type="text" name="BasicTextBox" size="100"^>^</div^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<div^>Suchet und Ihr werdet finden!^</div^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunScript"^>
>>"%destination%cassandra.hta" ECHO ^</body^>
>>"%destination%cassandra.hta" ECHO ^</html^>
start "" "cassandra.hta"
exit
:Finden
set destination=%~dp0%
set /p Suche=<suchwort.log
findstr /r /s /i /c:"%Suche%" %destination%*.htm >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.html >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.txt >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.bat >>erg.log
del cassandra.hta
>"%destination%cassandra.html"  ECHO ^<html^>
>>"%destination%cassandra.html" ECHO ^<head^>
>>"%destination%cassandra.html" ECHO ^<title^>HTA Hilfe für Batchschreiber^</title^>
>>"%destination%cassandra.html" ECHO ^<HTA:APPLICATION
>>"%destination%cassandra.html" ECHO         APPLICATIONNAME="HTAHilfe"
>>"%destination%cassandra.html" ECHO     SCROLL="yes"
>>"%destination%cassandra.html" ECHO     SINGLEINSTANCE="yes"
>>"%destination%cassandra.html" ECHO     WINDOWSTATE="maximize"
>>"%destination%cassandra.html" ECHO ^>
>>"%destination%cassandra.html" ECHO ^<style type="text/css"^>
>>"%destination%cassandra.html" ECHO a {color:#FFFF33; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%cassandra.html" ECHO a:hover {color:#FF0000; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu1 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu1:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu2 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu2:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO ^</style^>
>>"%destination%cassandra.html" ECHO ^</head^>
>>"%destination%cassandra.html" ECHO ^<SCRIPT Language="VBScript"^>
>>"%destination%cassandra.html" ECHO Sub RunScript
>>"%destination%cassandra.html" ECHO     Set objFSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%cassandra.html" ECHO     objFSO.CreateTextFile("suchwort.log")
>>"%destination%cassandra.html" ECHO     Set objFile = objFSO.OpenTextFile("suchwort.log", 2)
>>"%destination%cassandra.html" ECHO     objFile.WriteLine  BasicTextBox.Value
>>"%destination%cassandra.html" ECHO objFile.Close
>>"%destination%cassandra.html" ECHO dim shell
>>"%destination%cassandra.html" ECHO set shell = createobject("wscript.shell")
>>"%destination%cassandra.html" ECHO shell.run """cassandra.bat"""
>>"%destination%cassandra.html" ECHO self.close()
>>"%destination%cassandra.html" ECHO End Sub
>>"%destination%cassandra.html" ECHO ^</SCRIPT^>
>>"%destination%cassandra.html" ECHO ^<body style="color: white; background-color: black;" alink="red"
>>"%destination%cassandra.html" ECHO link="yellow" vlink="#3333ff"^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<center^>^<div^>^<big^>^<big^>^<big^>^<span style="color: red;"^>^&^#x8CEC; cassandra ^&^#x8CEC;^</span^>^</big^>^</big^>^</big^>^</div^>^<c/enter^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>^<input type="text" name="BasicTextBox" size="100"^>^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>Suchet und Ihr werdet finden!^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunScript"^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^> Ihre letztes Ergebnis in Dokumenten (bat, htm, html, txt) ist:^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
FOR /F "tokens=*" %%A IN ('findstr /N .* "erg.log"') DO echo %%A>> zahl.log
for /F "delims=: tokens=1,2,3*" %%i in (zahl.log) do nothing >>new_%%i.log & >>"new_%%i.log" Echo ^<p class=MsoNormal^>^<span lang=EN style='font-weight:normal'^>^<a href="%%k"^>Text: %%l^</a^>^</span^>^</p^>
copy new_*.log result.log
copy cassandra.html + result.log cassandra.hta
del cassandra.html
del suchwort.log
del result.log
del new_*.log
del erg.log
del zahl.log
>>"%destination%cassandra.hta" ECHO ^</body^>
>>"%destination%cassandra.hta" ECHO ^</html^>
start "" "cassandra.hta"

Erklärung

Der Sternenhimmelstuermer überfliegt mit Ihnen einmal den Code. In den letzten zwei Abhandlungen wurde im Prinzip vieles erklärt und dann immer auch auf diese Abhandlungen verwiesen.

If exist cassandra.hta goto Finden Beim ersten Durchlauf wird eine HTA erstellt. Deshalb wird überprüft, ob eine cassandra.hta im selben Ordner vorliegt, wenn ja, dann geht es weiter zur Sprungmarke :Finden

set destination=%~dp0% Mit dieser Zeile wird der Standort der Batch in einem sbsoluten Pfad ermittelt: Die zukünftige Variable %destination% ist also ein Pfad (bei Batches immer zwei Prozentzeichen).


>"%destination%cassandra.hta"  ECHO ^<html^> Wir beginnen mit dem Aufbau einer HTA relativ zu unserer Cassandra.bat. Jetzt wird es gemein. Der Sternenhimmelstuermer verweist auf seine Abhandlung über HTA.
Da wurde nämlich alles prima über die Struktur einer HTA erklärt.

Hier nur die Besonderheiten. Das Escapen von Eingabezeichen < und Ausgabezeichen > beim Aufbau einer Fremddatei mit dem Echo-Befehl ist eine leidige Pflicht, daher ^<  und ^> .

Ein paar Reihen werden nun übersprungen, in denen das Grundgerüst der HTA, die Formatierung der Datei in css (HTA ist nichts weiter als eine spezielle Form von Html) erstellt wird.

Weiter geht es mit dem VBS der HTA.

>>"%destination%cassandra.hta" ECHO Sub RunScript
>>"%destination%cassandra.hta" ECHO     Set objFSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%cassandra.hta" ECHO     objFSO.CreateTextFile("suchwort.log")
>>"%destination%cassandra.hta" ECHO     Set objFile = objFSO.OpenTextFile("suchwort.log", 2)
>>"%destination%cassandra.hta" ECHO     objFile.WriteLine  BasicTextBox.Value
>>"%destination%cassandra.hta" ECHO objFile.Close
>>"%destination%cassandra.hta" ECHO dim shell
>>"%destination%cassandra.hta" ECHO set shell = createobject("wscript.shell")
>>"%destination%cassandra.hta" ECHO shell.run """cassandra.bat"""
>>"%destination%cassandra.hta" ECHO self.close()
>>"%destination%cassandra.hta" ECHO End Sub
>>"%destination%cassandra.hta" ECHO ^</SCRIPT^>

Das ist der Skriptbereich für die Verarbeitung der Eingabe des Users. Die kommt zwischen Head- und Bodybereich - ist nach den Scriptboys der Microsoft Corporation sauberer Code - stimmt!


Der Code beinhaltet drei Befehle:
1. Es wird ein Textdokument suchwort.log mit dem Suchwort BasicTextBox.Value vom User aus der Eingabe in das Suchfeld  der HTA geschrieben, dass die Batch dann weiterverarbeitet.
2. Unsere Cassandra.bat wird nach Betätigen eines Suchbutton wiederum geöffnet: shell.run """cassandra.bat""" (Sie schließt sich mit einem exit-Befehl nach Erstellung der HTA, da kommen wir in ein paar Zeilen hin), um die Eingabe des Users zu verarbeiten.
3. Die Cassandra.hta schließt sich nach der Eingabe und dem Betätigen des Run Buttons mit Name Suche durch den User self.close(), natürlich erst nachdem ein Textdokument mit dem Namen suchwort.log erstellt wurde...

>>"%destination%cassandra.html" ECHO ^<div^>^<input type="text" name="BasicTextBox" size="100"^>^</div^>

Diese Zeile kreiert ein Eingabefeld, in das der User sein Suchwort oder Sätze eingibt. Diese wird mit dem o. a. VBS-Script in der HTA als Value (Wert) von  BasicTextBox nach Betätigung des Suchbuttons in ein Textdokument geschrieben (objFile.WriteLine  BasicTextBox.Value):

>>"%destination%cassandra.hta" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunScript"^>

Das Sub Runscript orientiert sich am Suche Button: Sub RunScript
Denn mit diesem wird der Value BasicTextBox übergeben.

start "" "cassandra.hta"
exit
:Finden

Ist der Übergang zur Batchbearbeitung. Beim ersten Durchlauf wird die cassandra.hta gestartet (start "" "cassandra.hta") und die Batch erstmal geschlossen (exit).

Der User hat nun also die gerade erstellte HTA vor sich. Der User gibt nun eine Zeichenkette bestehend aus einem Wort oder mehreren Wörtern ein. Groß- und Kleinschreibung ist egal.
Mit dem Aktivieren des Suche-Buttons starten die drei oben erklärten Befehle des VBS: Das Suchwort wird in ein Log-Dokument übergeben, die Batch wieder gestartet und die HTA wird geschlossen.
In der ersten Zeile wird nun folgerichtig erkannt (If exist cassandra.hta goto Finden), dass eine HTA existiert. Also überspringt die Batch den Zeilencode bis zum Sprungpunkt des Goto-Befehls:

:Finden.

set destination=%~dp0%
set /p Suche=<suchwort.log
findstr /r /s /i /c:"%Suche%" %destination%*.htm >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.html >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.txt >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.bat >>erg.log

Die folgenden Zeilen sind das Kernstück der Batch

Erstmal wird wieder der Standort der Batch festgestellt. Das ist notwendig, weil die Batch ja zwischenzeitlich geschlossen wurde. Neues Spiel, neues Glück set destination=%~dp0%.
Dann wird aus dem Suchwort.log, in dem das Suchwort des Users vom VBS bzw. der HTA geschrieben wurde, als Variable Suche definiert set /p Suche=<suchwort.log. O. K., die Variable hätte man
auch direkt übergeben können - ist so eine Eigenart vom Sternenhimmelstuermer...

Die folgenden vier Befehle sind in der CMD-Hilfe unter findstr /? abrufbar:

findstr /r /s /i /c:"%Suche%" %destination%*.htm >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.html >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.txt >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.bat >>erg.log

Wir suchen erstmal in allen htm- Dokumenten im Pfad der Batch %destination%*.htm nach dem Suchwort %Suche%. Die einzelnen Parameter von findstr. bedeuten /r Darstellung nach Möglichkeit im Textformat  /s
in allen Unterordnern /i ignoriert Groß und Kleinschreibung  und sucht nach der Zeichenfolge mit Leerzeichen buchstabengetreu.

Die Suche wird viermal für andere Dateitypen durchgeführt und sämtliche Ergebnisse untereinander in erg.log geschrieben.

Sie können die Suche um *vbs oder Javascripts oder Log-Dateien oder *.csv ergänzen - eben überall, wo reiner offener Text verwendet wird : Einfach nur Zeile mit Dateiendung hinzufügen - für *.csv
also findstr /r /s /i /c:"%Suche%" %destination%*.csv >>erg.log



Danach wird die HtA zerstört (del cassandra.hta), keine Sorge, die wird dann mit dem Ergebnis wieder neu aufgebaut...

>"%destination%cassandra.html"  ECHO ^<html^>
>>"%destination%cassandra.html" ECHO ^<head^>
>>"%destination%cassandra.html" ECHO ^<title^>HTA Hilfe für Batchschreiber^</title^>
>>"%destination%cassandra.html" ECHO ^<HTA:APPLICATION
>>"%destination%cassandra.html" ECHO         APPLICATIONNAME="HTAHilfe"
>>"%destination%cassandra.html" ECHO     SCROLL="yes"
>>"%destination%cassandra.html" ECHO     SINGLEINSTANCE="yes"
>>"%destination%cassandra.html" ECHO     WINDOWSTATE="maximize"
>>"%destination%cassandra.html" ECHO ^>
>>"%destination%cassandra.html" ECHO ^<style type="text/css"^>
>>"%destination%cassandra.html" ECHO a {color:#FFFF33; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%cassandra.html" ECHO a:hover {color:#FF0000; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu1 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu1:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu2 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu2:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO ^</style^>
>>"%destination%cassandra.html" ECHO ^</head^>
>>"%destination%cassandra.html" ECHO ^<SCRIPT Language="VBScript"^>
>>"%destination%cassandra.html" ECHO Sub RunScript
>>"%destination%cassandra.html" ECHO     Set objFSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%cassandra.html" ECHO     objFSO.CreateTextFile("suchwort.log")
>>"%destination%cassandra.html" ECHO     Set objFile = objFSO.OpenTextFile("suchwort.log", 2)
>>"%destination%cassandra.html" ECHO     objFile.WriteLine  BasicTextBox.Value
>>"%destination%cassandra.html" ECHO objFile.Close
>>"%destination%cassandra.html" ECHO dim shell
>>"%destination%cassandra.html" ECHO set shell = createobject("wscript.shell")
>>"%destination%cassandra.html" ECHO shell.run """cassandra.bat"""
>>"%destination%cassandra.html" ECHO self.close()
>>"%destination%cassandra.html" ECHO End Sub
>>"%destination%cassandra.html" ECHO ^</SCRIPT^>
>>"%destination%cassandra.html" ECHO ^<body style="color: white; background-color: black;" alink="red"
>>"%destination%cassandra.html" ECHO link="yellow" vlink="#3333ff"^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<center^>^<div^>^<big^>^<big^>^<big^>^<span style="color: red;"^>^&^#x8CEC; cassandra ^&^#x8CEC;^</span^>^</big^>^</big^>^</big^>^</div^>^<c/enter^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>^<input type="text" name="BasicTextBox" size="100"^>^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>Suchet und Ihr werdet finden!^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunScript"^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^> Ihre letztes Ergebnis in Dokumenten (bat, htm, html, txt) ist:^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>

Der Text ist nun bis auf den roten Text gleich mit der HTA, nur das wir kurzfristig eine html-Datei erstellen.
Wir fügen nur den Titeltext Ihre letztes Ergebnis in Dokumenten (bat, htm, html, txt) ist  für das Suchen ein und werden jetzt kreativ:

FOR /F "tokens=*" %%A IN ('findstr /N .* "erg.log"') DO echo %%A>> zahl.log
for /F "delims=: tokens=1,2,3*" %%i in (zahl.log) do nothing >>new_%%i.log & >>"new_%%i.log" Echo ^<p class=MsoNormal^>^<span lang=EN style='font-weight:normal'^>^<a href="%%k"^>Text: %%l^</a^>^</span^>^</p^>

Die beiden Befehle wurden in der letzten Abhandlung über eine ausführbare Dateiliste hinreichend erklärt.

FOR /F "tokens=*" %%A IN ('findstr /N .* "erg.log"') DO echo %%A>> zahl.log
In der ersten Zeile wird in unserem erstellten erg.log (Das war das Ergebnis der Dateisuche) eine Nummerierung durchgeführt, also steht da dann in der Art 1: Pfad:Text - also das, was von Findstr. gefunden wurde. Separator ist ein Doppelpunkt.
Ist aber egal, da die Ganze Zeile ein Bestandteil ist (tokens=*). Das Ergebnis wird also als durchnummeriertes Dokument in Zahl.log ausgegeben:

for /F "delims=: tokens=1,2,3*" %%i in (zahl.log) do nothing >>new_%%i.log & >>"new_%%i.log" Echo ^<p class=MsoNormal^>^<span lang=EN style='font-weight:normal'^>^<a href="%%k"^>Text: %%l^</a^>^</span^>^</p^>

Nun wird jede Zeile in durchnummerierte new_%%i.log Dokumente übergeben. Ist ein wenig tricky. Die Zeilennummern werden zur Überschrift und in den Dokumenten steht jeweils eine Zeile & >>"new_%%i.log" Echo ^<p class=MsoNormal^>^<span lang=EN style='font-weight:normal'^>^<a href="%%k"^>Text: %%l^</a^>^</span^>^</p^>, die das Ergebnis in einem ausführbaren Hyperlink darstellt. Do nothing heißt Tue nichts und ist kein regulärer Befehl. Es geht nur um die Ausgabe des Textdokumentes...Nothing ist ein sinnloses Kunstwort. Der Hyperlink wurde in der letzten Abhandlung erklärt. Ist quasi das Ergebnis per se.

Wir sind jetzt beim Endspurt. Wir müssen nur noch den Inhalt der einzelnen Dokumente zusammenfügen und in die HTA mit einemCopy - Befehl schreiben:

copy new_*.log result.log
Der erste Copy- Befehl schreibt den Inhalt der ganzen durchnummerierten Dokumente in ein Dokument namens result.log. Der zweite Befehl schreibt unsere bis hierher erstellte cassandra.html weiter, in dem die Zeilen vom result.log ergänzt werden und das in einem Dokument namens cassandra.hta umgewandelt wird.

copy cassandra.html + result.log cassandra.hta


Wer sich bis hierher durchgekämpft hat, wird nun verstehen: Es ist mit copy nicht möglich Ursprungs- und Enddokument gleichzeitig zu deklarieren. Der Sternenimmelstuermer findet copy leichter als einen For-Befehl. Deshalb diese Variante. J

del cassandra.html
del suchwort.log
del result.log
del new_*.log
del erg.log
del zahl.log

Jetzt kommt der Aufräumteil. Der Sternenhimmelstuermer löscht präzise die Dateien, die für die Bearbeitung nützlich waren, jetzt aber nicht mehr gebraucht werden. Das ist auch zwingend notwendig, da sonst nach einigen Durchläufen die Funktionalität erheblich eingeschränkt wird. Dennoch empfiehlt der Sternenhimmelstuermer Batchschreibern, die Zeilen auszuschneiden und einen Durchlauf so zu machen. Sie sehen dann die Dokumente. Nach dem Ausprobieren einfach einen Durchlauf mit der vollständigen Batch und Schluss ist es mit dem Dateienmüll...

Unsere HTA, die wir nach der Umbenennung von html erstellt haben, ist noch nicht ganz vollständig. Die letzten Zeilen werden nun in die Cassandra.hta geschrieben (cassandra.html wurde ja auch gerade gelöscht - vielleicht hätte der Sternenhimmelstuermer besser ein Cassandra.log verwendet - aber das ist schnurzpiepegal...


>>"%destination%cassandra.hta" ECHO ^</body^>
>>"%destination%cassandra.hta" ECHO ^</html^>

start "" "cassandra.hta"



Am Ende wird die Cassandra.hta gestartet oder esoterisch gesehen: Jedes Ende beinhaltet einen neuen Anfang.  Die alte Cassandra.hta wurde zerstört und die neue Cassandra beinhaltet den Ergebnistext der letzten Anfrage, aber auch ein Suchfeld für die nächste Abfrage.
Sie entsteht also wie Phönix aus der Asche immer wieder neu - ist doch eine nette Abwandlung ihres Fluches, dass niemand auf Sie hörte...


Einen Index für Word-Dokument erstellen.

Da Word das meistgenutzte Programm ist, stellt sich die Frage, ob man für Cassandra nicht zumindest in Form von Textdokumenten einen Index erstellen kann. Als die Microsoft Corporation vom docx zum doc-Format umstellte, kam ein Boom mit Makros für Word, um Stapelweise *.doc in *docx zu konvertieren. Diese englischsprachige Seite bietet z. B. eine bebilderte Anleitung. Das Prinzip: Es wird ein Makro geschrieben, dass in einem Ordner alle *.doc in *.docx konvertiert.

Wie dem auch sei. Ob man nun ein Dokument als *.docx, *.rtf oder *.txt speichert ... ist egal. Nur Bilder, Tabellen und Formatierungen fallen beim Textdokument unter den Tisch...egal für unseren Suchindex! Wir haben ja nur den Wunsch eine Überschrift und die Textzeile an sich herauszubekommen.


angepasster Code:

Sub conv()
sPath = "C:\cassandra\"
sFile = Dir(sPath & "*.docx")
While sFile <> ""
With Documents.Open(sPath & sFile)
.SaveAs FileName:=sPath & Replace(sFile, "docx", "txt"), FileFormat:=wdFormatText
.Close
End With
sFile = Dir
Wend
End Sub

Kurz erklärt
Eine Funktion Namens con() wurde erstellt Sub conv()
Der Pfad zum Ordner Kassandra wird Word angegeben sPath = "C:\cassandra\"
Die Funktion gilt für alle * Dokumente mit Dateiendung docx sFile = Dir(sPath & "*.docx")
While sFile <> ""
With Documents.Open(sPath & sFile)

Alle Dokumente werden geöffnet und

(.SaveAs FileName:=sPath & Replace(sFile, "docx", "txt"), FileFormat:=wdFormatText) unter dem selben Dateinamen im selben Pfad als Textdokument gespeichert (SaveAs). Das Replace ist kein Löschbefehl für die alten Dokumente..

.Close Das Dokument wird dann geschlossen und das nächste geöffnet, solange bis
End With
sFile = Dir
Wend
alle Dokumente bearbeitet wurden.
End Sub
Danach wird die Subroutine geschlossen.

1. Ordner cassandra in C:\ anlegen
2. ein paar Probedateien dahin kopieren
3. Word 2007 (mit dem habe ich das auch getestet) öffnen
4. Office Button drücken und Optionen auswählen
5. Unter Wichtigste Optionen für das Arbeiten mit Word bei Entwicklerregisterkarte in der Multifunktionsleiste anzeigen ein Häkchen setzen und mit O. K. übernehmen
6. In der Entwicklertool-Registerkarte ganz links  Makros auswählen.
7. Einen Titel wie con (konvertierung) als Makroname eingeben und fakultativ eine Beschreibung, dann den Button erstellen: Ein Grundgerüst wird angezeigt.
8. Das Grundgerüst wird gelöscht und der o. a. Text eingefügt.
9. einfach das Dokumentenfenster schließen
10. Wieder in die Entwicklertool-Registerkarte

Dort Makros auswählen. Jetzt wird Ihnen das Makro angeboten. Markieren und ausführen.
Sie sehen dann die sich kurz öffnenden Dokumente und nach ein paar Sekunden haben Sie mehrere Dokumente konvertiert!!! Klasse, die Originaldokumente bleiben selbstverständlich erhalten, aber Sie können auch gerne Kopien verwenden...

Dann müssten Sie noch die Textdokumente in einen anderen Ordner verschieben oder Cassandra in den selben Ordner legen...fertig ist der Suchindex...

Ach ja, da sind dann nochmal drei Zeilen neu zu coden, damit der Link  vom  Worddokument und nicht vom  Textdokument angezeigt wird. Da der Name des Textdokumentes dem des Worddokumentes entspricht nicht wirklich schlimm...Der Sternenhimmelstuermer sieht keinen Bedarf...und codet nicht weiter. Hey, dass hier ist eine Metaseite mit Code-Vorschlägen...

Erweiterung der Batch zum Suchen nach beliebigen Dateinamen oder Erstellung von Dateilisten


Cassandra wird 18...KB groß und kann nun auch nach Dateinamen mit Dateiendung finden. Dazu wurde ein zweites Fenster implementiert.
Eine Erklärung ist so gut wie unnötig, da der Quellcode für eine ausführbare Datei integriert wurde.
Sie können z. B. *.pdf  eingegeben und es werden sämtliche PDF-Dateien werden gelistet. Spezifisch können Sie z. B. nach einem Dateinamen suchen, dürfen aber nicht die Dateiendung vergessen, z. B. wichtig.docx. Existiert das Dokument wird Cassandra mit der neuen Ergebnisliste geöffnet. Das war jetzt auch die letzte Erweiterung...

Name

cassandra.bat (vorgeschrieben)

If exist dateiliste.log goto dateiliste
If exist cassandra.hta goto Finden
set destination=%~dp0%
>"%destination%cassandra.hta"  ECHO ^<html^>
>>"%destination%cassandra.hta" ECHO ^<head^>
>>"%destination%cassandra.hta" ECHO ^<title^>HTA Hilfe für Batchschreiber^</title^>
>>"%destination%cassandra.hta" ECHO ^<HTA:APPLICATION
>>"%destination%cassandra.hta" ECHO         APPLICATIONNAME="HTAHilfe"
>>"%destination%cassandra.hta" ECHO     SCROLL="yes"
>>"%destination%cassandra.hta" ECHO     SINGLEINSTANCE="yes"
>>"%destination%cassandra.hta" ECHO     WINDOWSTATE="maximize"
>>"%destination%cassandra.hta" ECHO ^>
>>"%destination%cassandra.hta" ECHO ^<style type="text/css"^>
>>"%destination%cassandra.hta" ECHO a {color:#FFFF33; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%cassandra.hta" ECHO a:hover {color:#FF0000; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%cassandra.hta" ECHO a.menu1 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%cassandra.hta" ECHO a.menu1:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%cassandra.hta" ECHO a.menu2 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%cassandra.hta" ECHO a.menu2:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%cassandra.hta" ECHO ^</style^>
>>"%destination%cassandra.hta" ECHO ^</head^>
>>"%destination%cassandra.hta" ECHO ^<SCRIPT Language="VBScript"^>
>>"%destination%cassandra.hta" ECHO Sub RunScript
>>"%destination%cassandra.hta" ECHO     Set objFSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%cassandra.hta" ECHO     objFSO.CreateTextFile("suchwort.log")
>>"%destination%cassandra.hta" ECHO     Set objFile = objFSO.OpenTextFile("suchwort.log", 2)
>>"%destination%cassandra.hta" ECHO     objFile.WriteLine  BasicTextBox.Value
>>"%destination%cassandra.hta" ECHO objFile.Close
>>"%destination%cassandra.hta" ECHO dim shell
>>"%destination%cassandra.hta" ECHO set shell = createobject("wscript.shell")
>>"%destination%cassandra.hta" ECHO shell.run """cassandra.bat"""
>>"%destination%cassandra.hta" ECHO self.close()
>>"%destination%cassandra.hta" ECHO End Sub
>>"%destination%cassandra.hta" ECHO ^</SCRIPT^>
>>"%destination%cassandra.hta" ECHO ^<SCRIPT Language="VBScript"^>
>>"%destination%cassandra.hta" ECHO Sub RunScript2
>>"%destination%cassandra.hta" ECHO     Set objFSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%cassandra.hta" ECHO     objFSO.CreateTextFile("dateiliste.log")
>>"%destination%cassandra.hta" ECHO     Set objFile = objFSO.OpenTextFile("dateiliste.log", 2)
>>"%destination%cassandra.hta" ECHO     objFile.WriteLine  BasicTextBox2.Value
>>"%destination%cassandra.hta" ECHO objFile.Close
>>"%destination%cassandra.hta" ECHO dim shell
>>"%destination%cassandra.hta" ECHO set shell = createobject("wscript.shell")
>>"%destination%cassandra.hta" ECHO shell.run """cassandra.bat"""
>>"%destination%cassandra.hta" ECHO self.close()
>>"%destination%cassandra.hta" ECHO End Sub
>>"%destination%cassandra.hta" ECHO ^</SCRIPT^>
>>"%destination%cassandra.hta" ECHO ^</SCRIPT^>
>>"%destination%cassandra.hta" ECHO ^<body style="color: white; background-color: black;" alink="red"
>>"%destination%cassandra.hta" ECHO link="yellow" vlink="#3333ff"^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<center^>^<div^>^<big^>^<big^>^<big^>^<span style="color: red;"^>^&^#x8CEC; cassandra ^&^#x8CEC;^</span^>^</big^>^</big^>^</big^>^</div^>^<c/enter^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<div^>^<input type="text" name="BasicTextBox" size="100"^>^</div^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<div^>Inhaltssuche von Dateien im Format: html txt oder bat ^</div^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<div^>Suchet und Ihr werdet finden!^</div^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunScript"^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<div^>Suche nach Dateiname: Geben Sie hier einen Dateinamen mit Dateiendung ein. Der Typ ist egal und ein Stern für z. B. alle MP3-Dateien ist erlaubt!^</div^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<div^>^<input type="text" name="BasicTextBox2" size="100"^>^</div^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunScript2"^>
>>"%destination%cassandra.hta" ECHO ^<br^>
>>"%destination%cassandra.hta" ECHO ^</body^>
>>"%destination%cassandra.hta" ECHO ^</html^>
start "" "cassandra.hta"
exit
:Finden
set destination=%~dp0%
set /p Suche=<suchwort.log
findstr /r /s /i /c:"%Suche%" %destination%*.htm >erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.html >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.txt >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.bat >>erg.log
del cassandra.hta
>"%destination%cassandra.html"  ECHO ^<html^>
>>"%destination%cassandra.html" ECHO ^<head^>
>>"%destination%cassandra.html" ECHO ^<title^>HTA Hilfe für Batchschreiber^</title^>
>>"%destination%cassandra.html" ECHO ^<HTA:APPLICATION
>>"%destination%cassandra.html" ECHO         APPLICATIONNAME="HTAHilfe"
>>"%destination%cassandra.html" ECHO     SCROLL="yes"
>>"%destination%cassandra.html" ECHO     SINGLEINSTANCE="yes"
>>"%destination%cassandra.html" ECHO     WINDOWSTATE="maximize"
>>"%destination%cassandra.html" ECHO ^>
>>"%destination%cassandra.html" ECHO ^<style type="text/css"^>
>>"%destination%cassandra.html" ECHO a {color:#FFFF33; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%cassandra.html" ECHO a:hover {color:#FF0000; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu1 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu1:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu2 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu2:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO ^</style^>
>>"%destination%cassandra.html" ECHO ^</head^>
>>"%destination%cassandra.html" ECHO ^<SCRIPT Language="VBScript"^>
>>"%destination%cassandra.html" ECHO Sub RunScript
>>"%destination%cassandra.html" ECHO     Set objFSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%cassandra.html" ECHO     objFSO.CreateTextFile("suchwort.log")
>>"%destination%cassandra.html" ECHO     Set objFile = objFSO.OpenTextFile("suchwort.log", 2)
>>"%destination%cassandra.html" ECHO     objFile.WriteLine  BasicTextBox.Value
>>"%destination%cassandra.html" ECHO objFile.Close
>>"%destination%cassandra.html" ECHO dim shell
>>"%destination%cassandra.html" ECHO set shell = createobject("wscript.shell")
>>"%destination%cassandra.html" ECHO shell.run """cassandra.bat"""
>>"%destination%cassandra.html" ECHO self.close()
>>"%destination%cassandra.html" ECHO End Sub
>>"%destination%cassandra.html" ECHO ^</SCRIPT^>
>>"%destination%cassandra.html" ECHO ^<SCRIPT Language="VBScript"^>
>>"%destination%cassandra.html" ECHO Sub RunScript2
>>"%destination%cassandra.html" ECHO     Set objFSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%cassandra.html" ECHO     objFSO.CreateTextFile("dateiliste.log")
>>"%destination%cassandra.html" ECHO     Set objFile = objFSO.OpenTextFile("dateiliste.log", 2)
>>"%destination%cassandra.html" ECHO     objFile.WriteLine  BasicTextBox2.Value
>>"%destination%cassandra.html" ECHO objFile.Close
>>"%destination%cassandra.html" ECHO dim shell
>>"%destination%cassandra.html" ECHO set shell = createobject("wscript.shell")
>>"%destination%cassandra.html" ECHO shell.run """cassandra.bat"""
>>"%destination%cassandra.html" ECHO self.close()
>>"%destination%cassandra.html" ECHO End Sub
>>"%destination%cassandra.html" ECHO ^</SCRIPT^>
>>"%destination%cassandra.html" ECHO ^<body style="color: white; background-color: black;" alink="red"
>>"%destination%cassandra.html" ECHO link="yellow" vlink="#3333ff"^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<center^>^<div^>^<big^>^<big^>^<big^>^<span style="color: red;"^>^&^#x8CEC; cassandra ^&^#x8CEC;^</span^>^</big^>^</big^>^</big^>^</div^>^<c/enter^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>^<input type="text" name="BasicTextBox" size="100"^>^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>Suche nach Dateiinhalten für die Formate: bat htm html txt ^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>Suchet und Ihr werdet finden!^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunScript"^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>Geben Sie hier einen Dateinamen mit Dateiendung ein. Der Typ ist egal und ein Stern für z. B. alle MP3-Dateien ist erlaubt!^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>^<input type="text" name="BasicTextBox2" size="100"^>^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunScript2"^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^> Ihre letztes Ergebnis in Dokumenten (bat, htm, html, txt) oder eine Liste von Dateinamen ist:^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
FOR /F "tokens=*" %%A IN ('findstr /N .* "erg.log"') DO echo %%A>> zahl.log
for /F "delims=: tokens=1,2,3*" %%i in (zahl.log) do nothing >>new_%%i.log & >>"new_%%i.log" Echo ^<p class=MsoNormal^>^<span lang=EN style='font-weight:normal'^>^<a href="%%k"^>Text: %%l^</a^>^</span^>^</p^>
copy new_*.log result.log
copy cassandra.html + result.log cassandra.hta
del cassandra.html
del suchwort.log
del result.log
del new_*.log
del erg.log
del zahl.log
>>"%destination%cassandra.hta" ECHO ^</body^>
>>"%destination%cassandra.hta" ECHO ^</html^>
start "" "cassandra.hta"
exit
:dateiliste
set /p Dateiname=<dateiliste.log
set destination=%~dp0%
chcp 28591 > NUL
for /f "delims=" %%i in ('dir "%destination%%Dateiname%" /s /b /a-d') do @echo %%~zi^:%%~ni^:%%i >>gro.log
>"%destination%cassandra.html"  ECHO ^<html^>
>>"%destination%cassandra.html" ECHO ^<head^>
>>"%destination%cassandra.html" ECHO ^<title^>HTA Hilfe für Batchschreiber^</title^>
>>"%destination%cassandra.html" ECHO ^<HTA:APPLICATION
>>"%destination%cassandra.html" ECHO         APPLICATIONNAME="HTAHilfe"
>>"%destination%cassandra.html" ECHO     SCROLL="yes"
>>"%destination%cassandra.html" ECHO     SINGLEINSTANCE="yes"
>>"%destination%cassandra.html" ECHO     WINDOWSTATE="maximize"
>>"%destination%cassandra.html" ECHO ^>
>>"%destination%cassandra.html" ECHO ^<style type="text/css"^>
>>"%destination%cassandra.html" ECHO a {color:#FFFF33; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%cassandra.html" ECHO a:hover {color:#FF0000; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu1 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu1:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu2 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO a.menu2:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%cassandra.html" ECHO ^</style^>
>>"%destination%cassandra.html" ECHO ^</head^>
>>"%destination%cassandra.html" ECHO ^<SCRIPT Language="VBScript"^>
>>"%destination%cassandra.html" ECHO Sub RunScript
>>"%destination%cassandra.html" ECHO     Set objFSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%cassandra.html" ECHO     objFSO.CreateTextFile("suchwort.log")
>>"%destination%cassandra.html" ECHO     Set objFile = objFSO.OpenTextFile("suchwort.log", 2)
>>"%destination%cassandra.html" ECHO     objFile.WriteLine  BasicTextBox.Value
>>"%destination%cassandra.html" ECHO objFile.Close
>>"%destination%cassandra.html" ECHO dim shell
>>"%destination%cassandra.html" ECHO set shell = createobject("wscript.shell")
>>"%destination%cassandra.html" ECHO shell.run """cassandra.bat"""
>>"%destination%cassandra.html" ECHO self.close()
>>"%destination%cassandra.html" ECHO End Sub
>>"%destination%cassandra.html" ECHO ^</SCRIPT^>
>>"%destination%cassandra.html" ECHO ^<SCRIPT Language="VBScript"^>
>>"%destination%cassandra.html" ECHO Sub RunScript2
>>"%destination%cassandra.html" ECHO     Set objFSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%cassandra.html" ECHO     objFSO.CreateTextFile("dateiliste.log")
>>"%destination%cassandra.html" ECHO     Set objFile = objFSO.OpenTextFile("dateiliste.log", 2)
>>"%destination%cassandra.html" ECHO     objFile.WriteLine  BasicTextBox2.Value
>>"%destination%cassandra.html" ECHO objFile.Close
>>"%destination%cassandra.html" ECHO dim shell
>>"%destination%cassandra.html" ECHO set shell = createobject("wscript.shell")
>>"%destination%cassandra.html" ECHO shell.run """cassandra.bat"""
>>"%destination%cassandra.html" ECHO self.close()
>>"%destination%cassandra.html" ECHO End Sub
>>"%destination%cassandra.html" ECHO ^</SCRIPT^>
>>"%destination%cassandra.html" ECHO ^<body style="color: white; background-color: black;" alink="red"
>>"%destination%cassandra.html" ECHO link="yellow" vlink="#3333ff"^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<center^>^<div^>^<big^>^<big^>^<big^>^<span style="color: red;"^>^&^#x8CEC; cassandra ^&^#x8CEC;^</span^>^</big^>^</big^>^</big^>^</div^>^<c/enter^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>^<input type="text" name="BasicTextBox" size="100"^>^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>Suche im Text von Dokumenten im Format bat htm html und txt!^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>Suchet und Ihr werdet finden!^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunScript"^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>Geben Sie hier einen Dateinamen mit Dateiendung ein. Der Typ ist egal und ein Stern für z. B. alle MP3-Dateien ist erlaubt!^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^>^<input type="text" name="BasicTextBox2" size="100"^>^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunScript2"^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<br^>
>>"%destination%cassandra.html" ECHO ^<div^> Ihre letztes Ergebnis in Dokumenten (bat, htm, html, txt) oder eine Liste von Dateinamen ist:^</div^>
>>"%destination%cassandra.html" ECHO ^<br^>
chcp 28591 > NUL
for /F "delims=: tokens=1,2,3*" %%i in (gro.log) do nothing >>neu_%%i.log & >>"neu_%%i.log" Echo ^<p class=MsoNormal^>^<span lang=DE style='font-weight:normal'^>^<a href="%%k:%%l"^>Dateiname %%j Größe %%i^</a^>^</span^>^</p^>
copy neu_*.log erg.log
copy cassandra.html + erg.log cassandra.hta
del cassandra.html
del dateiliste.log
del neu.htm
del neu_*.log
del gro.log
del erg.log
>>"%destination%cassandra.hta" ECHO ^</body^>
>>"%destination%cassandra.hta" ECHO ^</html^>
start "" "cassandra.hta"

Erklärung

Das war nicht sehr belastend, da der Sternenhimmelstuermer für beide Batches den Code entwickelte..
If exist dateiliste.log goto dateiliste

Die erste Zeile wurde hinzugefügt. Gibt jemand bei Cassandra im zweiten Dateifenster Namen und Dateiendung ein, so wird beim zweiten VBScript ein dateiliste.log erstellt. Die HTA erstellt bei Eingabe durch den User das Dokument, startet die Batch und schließt sich selbst. Die gestartete Batch findet dann das Dokument dateiliste.log und springt mit dem goto Befehl zu :dateiliste, was jetzt das Ende der Batch mit Weiterverarbeitung für eine Dateiliste ist.
Es existieren nun zwei VBS Scripts. Zu beachten ist dabei, dass die Namen der Inputfelder und des Runbottons einmalig bleiben...

Im Body bei den Eingabefeldern also für das zweite Eingabefeld:

>>"%destination%cassandra.hta" ECHO ^<div^>^<input type="text" name="BasicTextBox2" size="100"^>^</div^>
>>"%destination%cassandra.hta" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunScript2"^>

Im VBS zur Verarbeitung dementsprechend die Weiterverarbeitung bei Eingabe in die Suche:

>>"%destination%cassandra.hta" ECHO Sub RunScript2
>>"%destination%cassandra.hta" ECHO     objFile.WriteLine  BasicTextBox2.Value

Dann sind die Arbeitschritte fast gleich wie zuvor, nur das diesmal nach der Datei und nicht deren Inhalt gesucht wird. Wie gesagt, der Dateicode wurde in der letzten Abhandlung erklärt und mehr gibt es dazu nicht zu sagen.


Fazit

8 KB für diese Batch, die eigentlich bei besseren Coding auf 4 KB kürzbar wäre, ist rekordverdächtig. Als Vorlage hatte der Sternenhimmelstuermer drei Abhandlungen auf seiner Webeite. Dementsprechend dauerte die Erstellung gerade mal sieben Stunden - wobei die meiste Zeit beim Escapen ^ der Eingabe und Ausgabezeichen verging. Cassandra wird natürlich nicht Software wie Google Desktop Search ersetzen können, aber es ist zumindest eine lustige Spielerei...

Mit 18 KB und einer integrierten Dateisuche oder Dateilistung mit z. B. *.pdf (da sind dann wirklich alle Dateiendungen erlaubt) istCassandra eine ernst zu nehmende Alternative -:)


Nachtrag Merlin: Die Suchmaschine mit Frames stark verbessert


Der Sternenhimmelstuermer verfolgt einen pragmatischen Ansatz: Learnin bei Doing. Die folgende Suchmaschine mit Codenamen Merlin hat drei Frames. Die Dateien wurden in einer Batch eingebaut, die die notwendigen HTA und html-Dateien beim ersten Start entpackt und die HTA startet.

Einfach irgendwo in einem Verzeichnis platzieren (relativ oder übergeordneter Ordner). Im oberen Frame ist eine Eingabefläche und ein Suchbutton. Im Linken Frame ein Suchbutton. Mit dem Button im oberen Frame wird nach Eingabe eines Dateinamens in der Form beliebigername.pdf oder *.docx  nach den Dateien gesucht und diese in einer ausführbaren Liste im unteren Frame ausgegeben.

Je nach Internetexplorer werden PDF-Dokument sofort im Frame gestartet, wenn Sie als Plugin registriert sind...probieren Sie es aus. Merlin kann aber noch mehr: In htm, bat und Log-Dokumenten kann eine Suche nach dem Inhalt gemacht werden. Dazu ist der Button im linken Frame.

Als Ergänzung noch zwei Punkte:

1) Sie können von einem Frame natürlich auch auf die Eingabe des Nachbarframes zugreifen, alles eine Frage der Adressierung.
2) Es können mehrere Run-Button auf eine Eingabe gesetzt werden, aber die Subroutinen brauchen dann unterschiedliche Namen..
3) Man kann einen Frame neu laden, in dem man in der Subroutine einfach nochmal dieselbe Adressierung gibt.

Wer diese Äußerungen nicht versteht, einfach die Abhandlung über HTA und Frames lesen. Dann werden Sie sehen, dass es nicht schwer ist semiprofessionelle Anwendungen zu schreiben!

merlin.bat (Dateiname egal)

If exist dateiliste.log goto dateiliste
If exist suchwort.log goto inhaltensliste
set destination=%~dp0%

>"%destination%linkst.htm"  ECHO ^<html^>
>>"%destination%linkst.htm" ECHO ^<head^>
>>"%destination%linkst.htm" ECHO ^<title^>HTA Hilfe für Batchschreiber^</title^>
>>"%destination%linkst.htm" ECHO ^<HTA:APPLICATION
>>"%destination%linkst.htm" ECHO         APPLICATIONNAME="HTAHilfe"
>>"%destination%linkst.htm" ECHO     SCROLL="yes"
>>"%destination%linkst.htm" ECHO     SINGLEINSTANCE="yes"
>>"%destination%linkst.htm" ECHO     WINDOWSTATE="maximize"
>>"%destination%linkst.htm" ECHO ^>
>>"%destination%linkst.htm" ECHO ^<style type="text/css"^>
>>"%destination%linkst.htm" ECHO a {color:#FFFF33; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%linkst.htm" ECHO a:hover {color:#FF0000; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%linkst.htm" ECHO a.menu1 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%linkst.htm" ECHO a.menu1:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%linkst.htm" ECHO a.menu2 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%linkst.htm" ECHO a.menu2:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%linkst.htm" ECHO ^</style^>
>>"%destination%linkst.htm" ECHO ^</head^>

>>"%destination%linkst.htm" ECHO ^</SCRIPT^>
>>"%destination%linkst.htm" ECHO ^<SCRIPT Language="VBScript"^>
>>"%destination%linkst.htm" ECHO Sub RunScript
>>"%destination%linkst.htm" ECHO     Set objFSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%linkst.htm" ECHO     objFSO.CreateTextFile("suchwort.log")
>>"%destination%linkst.htm" ECHO     Set objFile = objFSO.OpenTextFile("suchwort.log", 2)
>>"%destination%linkst.htm" ECHO     objFile.WriteLine  WINDOW.PARENT.obend.BasicTextBox2.Value
>>"%destination%linkst.htm" ECHO objFile.Close
>>"%destination%linkst.htm" ECHO dim shell
>>"%destination%linkst.htm" ECHO set shell = createobject("wscript.shell")
>>"%destination%linkst.htm" ECHO shell.run """merlin.bat""", 1, true
>>"%destination%linkst.htm" ECHO WINDOW.PARENT.inhalten.LOCATION.HREF="inhalten.HTM"
>>"%destination%linkst.htm" ECHO End Sub
>>"%destination%linkst.htm" ECHO ^</SCRIPT^>
>>"%destination%linkst.htm" ECHO ^<body style="color: white; background-color: black;" alink="red"
>>"%destination%linkst.htm" ECHO link="yellow" vlink="#3333ff"^>
>>"%destination%linkst.htm" ECHO ^<br^>
>>"%destination%linkst.htm" ECHO ^<br^>
>>"%destination%linkst.htm" ECHO ^<br^>
>>"%destination%linkst.htm" ECHO ^<br^>
>>"%destination%linkst.htm" ECHO ^<br^>
>>"%destination%linkst.htm" ECHO ^<div^>Inhaltssuche von Dateien im Format: html, txt oder bat ^</div^>
>>"%destination%linkst.htm" ECHO ^<br^>
>>"%destination%linkst.htm" ECHO ^<br^>
>>"%destination%linkst.htm" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunScript"^>
>>"%destination%linkst.htm" ECHO ^<br^>
>>"%destination%linkst.htm" ECHO ^</body^>
>>"%destination%linkst.htm" ECHO ^</html^>


>"%destination%inhalten.htm"  ECHO ^<html^>
>>"%destination%inhalten.htm" ECHO ^<head^>
>>"%destination%inhalten.htm" ECHO ^<title^>HTA Hilfe für Batchschreiber^</title^>
>>"%destination%inhalten.htm" ECHO ^<HTA:APPLICATION
>>"%destination%inhalten.htm" ECHO         APPLICATIONNAME="HTAHilfe"
>>"%destination%inhalten.htm" ECHO     SCROLL="yes"
>>"%destination%inhalten.htm" ECHO     SINGLEINSTANCE="yes"
>>"%destination%inhalten.htm" ECHO     WINDOWSTATE="maximize"
>>"%destination%inhalten.htm" ECHO ^>
>>"%destination%inhalten.htm" ECHO ^<style type="text/css"^>
>>"%destination%inhalten.htm" ECHO a {color:#FFFF33; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%inhalten.htm" ECHO a:hover {color:#FF0000; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%inhalten.htm" ECHO a.menu1 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%inhalten.htm" ECHO a.menu1:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%inhalten.htm" ECHO a.menu2 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%inhalten.htm" ECHO a.menu2:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%inhalten.htm" ECHO ^</style^>
>>"%destination%inhalten.htm" ECHO ^</head^>
>>"%destination%inhalten.htm" ECHO ^<body style="color: white; background-color: black;" alink="red"
>>"%destination%inhalten.htm" ECHO link="yellow" vlink="#3333ff"^>
>>"%destination%inhalten.htm" ECHO ^<br^>
>>"%destination%inhalten.htm" ECHO ^</body^>
>>"%destination%inhalten.htm" ECHO ^</html^>

>"%destination%merlin.hta"  ECHO ^<html^>
>>"%destination%merlin.hta" ECHO ^<head^>
>>"%destination%merlin.hta" ECHO ^<title^>Merlin^</title^>
>>"%destination%merlin.hta" ECHO ^<HTA:APPLICATION
>>"%destination%merlin.hta" ECHO      ID="merlin"
>>"%destination%merlin.hta" ECHO      APPLICATIONNAME="Merlin"
>>"%destination%merlin.hta" ECHO      SCROLL="yes"
>>"%destination%merlin.hta" ECHO      SINGLEINSTANCE="yes"
>>"%destination%merlin.hta" ECHO      WINDOWSTATE="maximize"
>>"%destination%merlin.hta" ECHO      Border="thick"    
>>"%destination%merlin.hta" ECHO ^>
>>"%destination%merlin.hta" ECHO ^</head^>
>>"%destination%merlin.hta" ECHO ^<frameset cols="200,*" frameborder="1" border="1" framespacing="1"^>
>>"%destination%merlin.hta" ECHO ^<frame application="yes" src="linkst.htm" name="linkst" scrolling="auto"^>
>>"%destination%merlin.hta" ECHO ^<frameset rows="400,*" frameborder="1" border="1" framespacing="1"^>
>>"%destination%merlin.hta" ECHO ^<frame application="yes" src="obend.htm" name="obend" scrolling="auto"^>
>>"%destination%merlin.hta" ECHO ^<frame application="yes" src="inhalten.htm" name="inhalten" scrolling="auto"^>
>>"%destination%merlin.hta" ECHO ^</frameset^>
>>"%destination%merlin.hta" ECHO ^</frameset^>
>>"%destination%merlin.hta" ECHO ^</html^>



>"%destination%obend.htm"  ECHO ^<html^>
>>"%destination%obend.htm" ECHO ^<head^>
>>"%destination%obend.htm" ECHO ^<title^>HTA Hilfe für Batchschreiber^</title^>
>>"%destination%obend.htm" ECHO ^<HTA:APPLICATION
>>"%destination%obend.htm" ECHO         APPLICATIONNAME="Merlin"
>>"%destination%obend.htm" ECHO     SCROLL="yes"
>>"%destination%obend.htm" ECHO     SINGLEINSTANCE="yes"
>>"%destination%obend.htm" ECHO     WINDOWSTATE="maximize"
>>"%destination%obend.htm" ECHO ^>
>>"%destination%obend.htm" ECHO ^>
>>"%destination%obend.htm" ECHO ^<style type="text/css"^>
>>"%destination%obend.htm" ECHO a {color:#FFFF33; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%obend.htm" ECHO a:hover {color:#FF0000; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%obend.htm" ECHO a.menu1 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%obend.htm" ECHO a.menu1:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%obend.htm" ECHO a.menu2 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%obend.htm" ECHO a.menu2:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%obend.htm" ECHO ^</style^>
>>"%destination%obend.htm" ECHO ^</head^>
>>"%destination%obend.htm" ECHO ^</SCRIPT^>
>>"%destination%obend.htm" ECHO ^<SCRIPT Language="VBScript"^>
>>"%destination%obend.htm" ECHO Sub RunMerlin
>>"%destination%obend.htm" ECHO     Set objFSO = CreateObject("Scripting.FileSystemObject")
>>"%destination%obend.htm" ECHO     objFSO.CreateTextFile("dateiliste.log")
>>"%destination%obend.htm" ECHO     Set objFile = objFSO.OpenTextFile("dateiliste.log", 2)
>>"%destination%obend.htm" ECHO     objFile.WriteLine  BasicTextBox2.Value
>>"%destination%obend.htm" ECHO objFile.Close
>>"%destination%obend.htm" ECHO dim shell
>>"%destination%obend.htm" ECHO set shell = createobject("wscript.shell")
>>"%destination%obend.htm" ECHO shell.run """merlin.bat""", 1, true
>>"%destination%obend.htm" ECHO WINDOW.PARENT.inhalten.LOCATION.HREF="inhalten.HTM"
>>"%destination%obend.htm" ECHO End Sub
>>"%destination%obend.htm" ECHO ^</SCRIPT^>
>>"%destination%obend.htm" ECHO ^<body style="color: white; background-color: black;" alink="red"
>>"%destination%obend.htm" ECHO link="yellow" vlink="#3333ff"^>
>>"%destination%obend.htm" ECHO ^<br^>
>>"%destination%obend.htm" ECHO ^<br^>

>>"%destination%obend.htm" ECHO ^<br^>
>>"%destination%obend.htm" ECHO ^<center^>^<div^>^<big^>^<big^>^<big^>^<span style="color: red;"^>^&#x8CEC; Merlin ^&#x8CEC;^</span^>^</big^>^</big^>^</big^>^</div^>^<c/enter^>
>>"%destination%obend.htm" ECHO ^<br^>
>>"%destination%obend.htm" ECHO ^<div^>Suchet und Ihr werdet finden!^</div^>
>>"%destination%obend.htm" ECHO ^<br^>
>>"%destination%obend.htm" ECHO ^<div^>Eingabe: Dateinamen.Endung Sucht alle Dateinamen, auch mit Wildcard wie z. B. *.pdf^</div^>
>>"%destination%obend.htm" ECHO ^<br^>
>>"%destination%obend.htm" ECHO ^<div^>^<input type="text" name="BasicTextBox2" size="100"^>^</div^>
>>"%destination%obend.htm" ECHO ^<br^>
>>"%destination%obend.htm" ECHO ^<br^>
>>"%destination%obend.htm" ECHO ^<input id=runbutton  class="button" type="button" value="Suche" name="run_button"  onClick="RunMerlin"^>
>>"%destination%obend.htm" ECHO ^<br^>
start "" "merlin.hta"
exit


:dateiliste
set /p Dateiname=<dateiliste.log
set destination=%~dp0%
chcp 28591 > NUL
for /f "delims=" %%i in ('dir "%destination%%Dateiname%" /s /b /a-d') do @echo %%~zi^:%%~ni^:%%i >>gro.log
>"%destination%inhalten.html"  ECHO ^<html^>
>>"%destination%inhalten.html" ECHO ^<head^>
>>"%destination%inhalten.html" ECHO ^<title^>HTA Hilfe für Batchschreiber^</title^>
>>"%destination%inhalten.html" ECHO ^<HTA:APPLICATION
>>"%destination%inhalten.html" ECHO         APPLICATIONNAME="HTAHilfe"
>>"%destination%inhalten.html" ECHO     SCROLL="yes"
>>"%destination%inhalten.html" ECHO     SINGLEINSTANCE="yes"
>>"%destination%inhalten.html" ECHO     WINDOWSTATE="maximize"
>>"%destination%inhalten.html" ECHO ^>
>>"%destination%inhalten.html" ECHO ^<style type="text/css"^>
>>"%destination%inhalten.html" ECHO a {color:#FFFF33; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%inhalten.html" ECHO a:hover {color:#FF0000; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%inhalten.html" ECHO a.menu1 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%inhalten.html" ECHO a.menu1:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%inhalten.html" ECHO a.menu2 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%inhalten.html" ECHO a.menu2:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%inhalten.html" ECHO ^</style^>
>>"%destination%inhalten.html" ECHO ^</head^>
>>"%destination%inhalten.html" ECHO ^<body style="color: white; background-color: black;" alink="red"
>>"%destination%inhalten.html" ECHO link="yellow" vlink="#3333ff"^>
>>"%destination%inhalten.html" ECHO ^<br^>

>>"%destination%inhalten.htm" ECHO ^<div^>Das Ergebnis der Suche:^</div^>
>>"%destination%inhalten.htm" ECHO ^<br^>
chcp 28591 > NUL
for /F "delims=: tokens=1,2,3*" %%i in (gro.log) do nothing >>neu_%%i.log & >>"neu_%%i.log" Echo ^<p class=MsoNormal^>^<span lang=DE style='font-weight:normal'^>^<a href="%%k:%%l"^>Dateiname %%j Größe %%i^</a^>^</span^>^</p^>
copy neu_*.log erg.log
copy inhalten.html + erg.log inhalten.htm
del dateiliste.log
del neu.htm
del neu_*.log
del gro.log
del erg.log
del inhalten.html
>>"%destination%inhalten.htm" ECHO ^</body^>
>>"%destination%inhalten.htm" ECHO ^</html^>
exit

:inhaltensliste
set destination=%~dp0%
set /p Suche=<suchwort.log
findstr /r /s /i /c:"%Suche%" %destination%*.htm >erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.html >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.txt >>erg.log
findstr /r /s /i /c:"%Suche%" %destination%*.bat >>erg.log
>"%destination%inhalten.html"  ECHO ^<html^>
>>"%destination%inhalten.html" ECHO ^<head^>
>>"%destination%inhalten.html" ECHO ^<title^>HTA Hilfe für Batchschreiber^</title^>
>>"%destination%inhalten.html" ECHO ^<HTA:APPLICATION
>>"%destination%inhalten.html" ECHO         APPLICATIONNAME="HTAHilfe"
>>"%destination%inhalten.html" ECHO     SCROLL="yes"
>>"%destination%inhalten.html" ECHO     SINGLEINSTANCE="yes"
>>"%destination%inhalten.html" ECHO     WINDOWSTATE="maximize"
>>"%destination%inhalten.html" ECHO ^>
>>"%destination%inhalten.html" ECHO ^<style type="text/css"^>
>>"%destination%inhalten.html" ECHO a {color:#FFFF33; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%inhalten.html" ECHO a:hover {color:#FF0000; font-size:10pt; font-family:verdana,sans-serif,tahoma; text-decoration:none}
>>"%destination%inhalten.html" ECHO a.menu1 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%inhalten.html" ECHO a.menu1:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:8pt; text-decoration:none}
>>"%destination%inhalten.html" ECHO a.menu2 {color:#FFFFFF; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%inhalten.html" ECHO a.menu2:hover {color:#FF0000; font-family:verdana,sans-serif,tahoma; font-size:9pt; text-decoration:none}
>>"%destination%inhalten.html" ECHO ^</style^>
>>"%destination%inhalten.html" ECHO ^</head^>
>>"%destination%inhalten.html" ECHO ^<body style="color: white; background-color: black;" alink="red"
>>"%destination%inhalten.html" ECHO link="yellow" vlink="#3333ff"^>
>>"%destination%inhalten.html" ECHO ^<br^>

>>"%destination%inhalten.htm" ECHO ^<div^>Das Ergebnis der Suche:^</div^>
>>"%destination%inhalten.htm" ECHO ^<br^>
FOR /F "tokens=*" %%A IN ('findstr /N .* "erg.log"') DO echo %%A>> zahl.log
for /F "delims=: tokens=1,2,3*" %%i in (zahl.log) do nothing >>new_%%i.log & >>"new_%%i.log" Echo ^<p class=MsoNormal^>^<span lang=EN style='font-weight:normal'^>^<a href="%%k"^>Text: %%l^</a^>^</span^>^</p^>
copy new_*.log result.log
copy inhalten.html + result.log inhalten.htm
del inhalten.html
del suchwort.log
del result.log
del new_*.log
del erg.log
del zahl.log
>>"%destination%inhalten.htm" ECHO ^</body^>
>>"%destination%inhalten.htm" ECHO ^</html^>

Damit ist dieses Projekt noch nicht abgeschlossen. In Merlin werden noch weitere Skripte integriert. Ist erst 15 KB groß..Kassandra ist tot, es lebe Merlin...

Impressum
Datenschutz