Hallo,
füllen wir die Sache mit etwas Fleisch:
offensichtlich noch nicht wirklich.
a) Verwende keine Links.
Du hast offensichtlich eine Liste von Batchdateien, also verwendest Du am besten eine Liste :-)
Du könntest mit folgendem HTML (und etwas CSS, damits hübscher aussieht) starten:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Starte meine Lieblingsbatches</title>
</head>
<body>
<ul>
<li>
<--
Verwende ein Label für die Beschriftung.
Dann kann man auch auf die Beschriftung klicken.
-->
<[ref:self812;html/formulare/strukturieren.htm#label@title=label] for="notes">Lotus Notes</label>
<--
Beachte: Wert des for-Attributes des label-Elementes muss
mit dem Wert des id-Elementes der Checkbox übereinstimmen
Wir nutzen das value-Attribut, um den Pfad zur Batchdatei
unterzubringen.
-->
<input id="notes"
type="checkbox"
value="L:\\batch\\notes.cmd">
</li>
<li>
<label for="sol">Fun</label>
<input id="sol"
type="checkbox"
value="L:\\batch\\sol.cmd">
</li>
<li>
<label for="notepad">Harte Arbeit</label>
<input id="notepad"
type="checkbox"
value="L:\\batch\\notepad.cmd">
</li>
</ul>
<--
Ein Klickbutton zum Starten der angehakten Batchdateien.
Dies wird eine selbstdefinierte Funktion mit dem Namen
start_all_batches()
für uns tun.
-->
<[ref:self812;html/formulare/klickbuttons.htm@title=button] onclick="[code lang=javascript]start_all_batches();
~~~">
Starte ausgewählte Batchdateien
</button>
</body>
</html>
[/code]
> b) Sammle die auszuführenden Batchdateien in einem Array.
was unsere Funktion start\_all\_batches() zu tun hat. Um die Checkboxen zu durchlaufen, gehen wir so vor, wie es frankx in [diesem Archivbeitrag](/archiv/2008/1/t165119/#m1076529) zeigt:
~~~javascript
function start_all_batches() {
// Wir verschaffen uns eine Sammlung aller Input-Elemente,
var my_inputs = [ref:self812;javascript/objekte/document.htm#get_elements_by_tag_name@title=document.getElementsByTagName]("input");
// ermitteln ihre Anzahl
var my_inputs_count = my_inputs.[ref:self812;javascript/objekte/array.htm#length@title=length];
// und bereiten ein Array für die auszuführenden Batchdateien vor.
var command_list = new [ref:self812;javascript/objekte/array.htm#allgemeines@title=Array]();
// Wir durchlaufen die Sammlung der Input-Elemente
for (var i = 0; i < my_inputs_count; i++) {
// und tun nur etwas, wenn es sich um eine Checkbox handelt,
// die ausgewählt ist.
// Dazu nutzen wir die Element-Eigenschaften
// [ref:self812;javascript/objekte/elements.htm#type@title=type]
// [ref:self812;javascript/objekte/elements.htm#checked@title=checked]
if (my_inputs[i].type == "checkbox" && my_inputs[i].[ref:self812;javascript/objekte/elements.htm#checked@title=checked]) {
// dann packen wir den Inhalt des value-Attributes,
// das heißt unseren Pfad zur Batchdatei, in das Array, das
// alle auszuführenden Kommandos enthalten wird.
command_list.push(my_inputs[i].[ref:self812;javascript/objekte/elements.htm#value@title=value]);
}
}
> // c) Durchlaufe am Ende das Array und lasse für jeden Eintrag das Kommando
> // ausführen.
// Jetzt haben wir in unserem Array command_list alle auszuführenden
// Kommandos als Arrayelemente und müssen sie nur noch der Reihe nach
// ausführen. Wir durchlaufen auch dieses Array mit einer for-Schleife
// und überlassen das Ausführen des Kommandos einer Hilfsfunktion
// start_batch(command)
// der wir das auszuführende Kommando als Argument übergeben.
// Wir ermitteln, wieviele Kommandos in unserer Kommandoliste drin sind.
var my_command_count = command_list.length;
for (var i = 0; i < my_command_count; i++) {
// und starten für jeden Eintrag unsere Hilfsfunktion
start_batch(command_list[i]);
}
}
d) Verwende dafür den Windows Script Host.
wie im bereits verlinkten Beitrag verwenden wir (hier noch ohne Fehlerprüfung) den dort gezeigten Mechanismus mit dem Windows Scripting Host. Funktioniert nur im IE :-)
function start_batch(command) {
// Wir benötigen Zugriff auf die Windows-Shell, dazu nutzen wir das
// WshShell-Objekt
var wshShell = new ActiveXObject("[link:http://msdn.microsoft.com/en-us/library/aew9yb99%28v=VS.85%29.aspx@title=WScript.Shell]");
if (wshShell) {
// und lassen mit der [link:http://msdn.microsoft.com/en-us/library/ateytk4a%28v=VS.85%29.aspx@title=Exec-Methode] unser Kommando ausführen
var oExec = wshShell.Exec(command);
}
}
e) Es wäre nicht die schlechteste Idee, für diese Anwendung eine HTA zu
verwenden.
Wenn Du die resultierende Datei ganz normal als .html oder .htm-Datei abspeicherst und mit dem IE öffnest, bekommst Du hübsche Warnmeldungen angezeigt. Speicherst Du die Datei einfach mit der Endung .hta, dann kannst Du sie einfach per Doppelklick starten und für den Start Deiner Batchdateien musst Du auch nichts mehr bestätigen :-)
Freundliche Grüße
Vinzenz