VBSCRIPT Dateien mit Checkboxen und onclick löschen
Daniel D.
- html
HAllo alle zusammen,
mein Script soll Dateien aus einem festgelegten Ordner holen und in eine HTML Datei schreiben. Dann habe ich Checkboxen zum löschen eingebaut und Zwei Buttons, einmal OK und Abbrechen. Wenn ich die Dateien anhacke sollen diese bei betätigung des OK Buttons gelöscht werden, das Problem, das löschen funktioniert nicht. Ich habe als Test mir vorgenommen das erst mal eine MSGBox ausgegeben wird wenn ich den Button drücke. Könnt IHR mir helfen das das klapp. Die nächsten Absätze sind eine genauere Beschreibung des Ablaufs und des Umgangs bei kopieren des Scriptes.
Das Script läuft nicht Serverseitig, es ist auch keine Art Formular.
Hier ist das ganze Script, IHR könnt es ohne Risiko kopieren und ausführen.
IHR müsst nur den Pfad ändern und ein Ordner mit Beispieldateien anlegen.
Allerdings müssen es DOC Dateien sein und der Name muss folgendermaßen aufgebaut sein "einsabc-12345678.doc". Ihr könnt sie auch anderes nennen, es ist jedoch wichtig das der Name ein "-" enthält, weil das Script aus dem Namen zwei Arrays macht und mit dem zweiten arbeitet. Wenn Ihr sie umbenennst müsst IHR es auch im Script ändern.
Nach dem Minus sollte eine Nummer folgen, es simuliert das Aktenzeichen nach dem ich suchen will. Das Script sucht im oberen Teil nach der genauen Bezeichung (ob in dem Ordner der genau Name zu finden ist) und löscht dann automatisch falls vorhanden die DOC-Datei ( es kommt dann eine Meldung MSGBOX " Datei gelöscht dateiname") und beendet sich dann. Falls nicht, sucht es per Schleife (im oben angegebenen Ordner) nach Doc-Dateien und splitet diese in zwei Arrays´, allerdings nur mit Minuszeichen versehende, andere ignoriert es. Jetzt vergleicht das Script die Dateinamen, allerdings nur die zweiten Arrays, es vergleicht den oben im Script eingegben Namen, also dann nur noch die Nummer; mit den gefundenen im Dateien im Ordner, auch nur die Nummer.
Es vergleicht also Array zwei mit Array zwei, Nummer mit Nummer.
Meine Vorgabe ist: wenn 7 Zeichen (Zahlen) gleich mit der oben im Script aufgeführten Nummer übereinstimmen soll die Datei in eine HTML Datei geschrieben werden, mit Namen und Größe usw.
Ab dem Teil "Explorer aufrufen und die HTML Datei anzeigen", ist ganz groß mit Sternen umrandet, gehts dann los. In der Zeile wo meineDatei.writeLine steht findet IHR am Ende OnClick was nicht klappt. Ich habe auch noch mal ein Komentar drüber geschrieben in GROßBUCHSTABEN was erst mal passieren soll zur Bestätigung (Test).
Ich hoffe das IHR mein wildes Script durchblickt und mir dann genauer helfen könnt.
Bis wirklich ganz ans Ende läuft das Script nur wenn es keine Datei mit 7 gleichen Zahlen gefunden hat und öffnet dann als MSGBOX nur "Datei existiert nicht". Die HTML Datei wurde dann trozdem erzeugt, ist aber dann leer, das ist egal. Achso, bei meinedatei.writeLine müsst IHR da drauf achten, wenn IHR das Script bei euch auf dem Rechner startet, dass der Quellcode in eine Zeile geschrieben werden muss, sonst meckert der rum. Geht hier nicht anderes zu schreiben, kein platz.
Sprache:VB-SCRIPT
set fso = CreateObject("Scripting.FileSystemObject")
set fo = fso.getFolder("e:\VBScript für Betrieb")
Set fc = fo.files
dokument = "einsabc-12345678.doc"
Bedingung1 = false
FOR EACH datei IN fc
orginalname = fso.getFileName(datei.path)
IF dokument = orginalname THEN
ausgabe = "Die folgende(n) Datei(en) wurde(n) gelöscht:" & vbcr & ausgabe & vbcr & datei.name
Bedingung1 = true
datei.delete
MsgBox ausgabe
END IF
NEXT
IF Bedingung1 = true THEN
WScript.Quit
END IF
Set meineDatei = fso.CreateTextFile("e:\VBScript für Betrieb\log.html")
meineDatei.writeline "<table border=""1"" cellspacing=""3"" cellpadding=""8""> <tr><th>Dateiname</th><th>Groesse</th><th>zuletzt geändert</th><th>Löschen ?</th>"
schreiben = false
arrName = split(dokument, "-")
returnValue = false
' aktenz enthält das Aktenzeichen des zu löschenden Dokuments
' Wert aus arrName zugewiesen...
aktenzeichen = arrName(1)
' Ausführung für alle Dateien in Ordner fc
' Es findet noch keine Typunterscheidung statt...
FOR EACH datei IN fc
'vor jeder neuen Datei wird returnValue mit false initialisiert!
returnValue = false
dateiname = fso.getFileName(datei.path)
' dateiname wird aufgeteilt und die einzelnen Werte werden dem Array
' aktenzeichenordner zugewiesen...
aktenzeichenordner = split(dateiname,"-")
' nur wenn tatsächlich ein zweiter Wert im Array vorhanden ist,
' wird die Variable dort mit 2. Element von array aktenzeichenordner besetzt...
If(UBound(aktenzeichenordner) > 0 ) Then
dort = aktenzeichenordner(1)
returnValue = true
End If
' nur wenn returnValue true ist UND der Vergleich von aktenz und den ersten
' sieben Zeichen von dort WAHR ergibt wird das Dokument in die HTML Datei geschrieben...
If returnValue = true and left(aktenzeichen,7) = Left(dort,7) Then
'ausgabe = ausgabe & vbcr & datei.name
schreiben = true
meineDatei.writeline "<tr><td><a href='" & datei.name & "'>" & datei.name & "</a></td><td>" & datei.size & " </td><td>" & datei.datelastmodified & "</td><td align=""center""><input type=""checkbox"" name=""Auswahl""></td>"
Bedingung = true
END IF
NEXT
If Bedingung = true Then
'**********************************************************
'* *
'* Explorer aufrufen und die HTML Datei anzeigen *
'* *
'**********************************************************
' Jetzt noch die Buttons einbauen... HIER IST DER KRITISCHE PUNKT, BEI BETÄTIGUNG DES BUTTONS SOLL NUR EINE MSGBOX ERSTMAL AUSGEGEN WERDEN, ZUR BESTÄTIGUNG
meineDatei.writeline "<tr><td colspan=""4"" rowspan=""3"" align=""center""><input type=""button"" name=""OK"" value="" Ok ""><input type=""button""name=""cancel""value=""Abbrechen""onClick=""MsgBox (es funktioniert)""></td></tr>"
'MsgBox "Browserobjekt erzeugen"
Set meinBrowser = CreateObject("InternetExplorer.Application.1")
'MsgBox "Browser sichtbar schalten"
meinBrowser.visible = true
'MsgBox "Eine Seite aufrufen"
meinBrowser.navigate2("e:\VBScript für Betrieb\log.html")
End If
If Bedingung = false THEN
ausgabe = " Die Datei "& dokument &" existiert nicht! "
MsgBox ausgabe , + vbInformation
End IF
Hallo Daniel oder doch Jim?
[...] jede Menge Erklärung und Quellcode gelöscht [...]
Den Themenbereich habe ich auch geändert, denn mit HTML oder XHTML hat Dein Problem auch nichts zu tun.
Als Test wollt ich erst ma eine Nachricht ausgeben lassen, wenn ich den Button ankliche.
ja, Du kannst durchaus mit Eventhandlern wie onclick VB-Script-Funktionen ausführen lassen. Ich mache das z.B. auf einer Testseite. Wie Du den dortigen Hinweisen entnehmen kannst, müssen die Sicherheitseinstellungen extrem niedrig eingestellt werden. Das Hinzufügen zur Liste der vertrauten Sites reicht noch lange nicht aus.
Die Logik Deines Skriptes habe ich mir nicht näher angeschaut, allerdings möchte ich Dir das Konzept der Funktionen nahelegen. Funktionen gestatten es Dir, Dein Skript übersichtlicher aufzubauen. Eine Fehlerbehandlung könnte übrigens auch nicht schaden ...
Freundliche Grüße
Vinzenz
Hi, danke für die Antwort.
Ich habe mich an deiner Testseite orientiert und jetzt passiert auch was. Allerdings immer noch nicht das was ich wollte. Jetzt steht untem in Browser "Fehler auf der Seite". Als Meldung sag er mir
Zeile: 3
Zeichen: 1
Fehler: Objekt erwartet
Code: 0
URL: file://E:\VBScript für Betrieb\log.html
Was meint er damit?
die Sicherheitseinstellungen müssen extrem niedrig eingestellt werden. Das Hinzufügen zur Liste der vertrauten Sites reicht noch lange nicht aus.
Hab ich dann auch gemacht, funktioniert aber immer noch nicht.