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;"^>^賬 Merlin
^賬^</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...