Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Datei öffnen Dialog
Frage
Habe ein Konvertierungsprogramm wo mir mein CNC für verschiedene Maschinen Konvertiert. Die Datei muss auf das Script verschoben werden und die Datei wird Konvertiert. So weit so Gut, dies funktioniert auch. Jetzt möchte ich aber das wenn man das Script mit Doppelklick öffnet , dass das Dateiöffnen Dialog kommt und ich eine oder mehrere Dateien auswählen kann und konvertieren. Kann mir jemand helfen?
Option Explicit
Const ForReading = 1
Dim Krit
Dim ncDATEI, DATEI, p
Dim regEx
Dim objFileSystem
Dim objTextFile, Pfad
Dim Stream
Dim Suche, Ersetze, Apes1, Apes2, SZ, EZ
'--------------------------------------------------------------
' Programmname ermitteln
'--------------------------------------------------------------
Set Krit = WScript.Arguments
if Krit.count <> 1 then
wscript.echo "Es muß genau eine .nc Datei als Argument mitgegeben werden."
wscript.quit
end if
ncDATEI = Krit(0)
p = InstrRev(ncDATEI,"\") + 1
DATEI = mid(ncDATEI,p,len(ncDATEI)-p-2)
'--------------------------------------------------------------
' Lesen der ncDatei in Stream (komplett)
'--------------------------------------------------------------
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
If (objFileSystem.FileExists(ncDATEI)) Then
Set objTextFile = objFileSystem.OpenTextFile(ncDATEI, ForReading,True)
Else
MsgBox "Ein unerwarterter Fehler ist aufgetreten"
Wscript.Quit
End If
Stream = objTextFile.ReadAll
objTextFile.Close
'--------------------------------------------------------------
' Konvertierung
' Prüfung, welcher Fall vorliegt (R26=328 Apes1, R26 =319 Apes2)
'--------------------------------------------------------------
Apes1 = "R26=319-(R25/2)-30-5 ;ELKTRODE+ABSTAND"
Apes2 = "R26=328-(R25/2)-30-5 ;ELKTRODE+ABSTAND"
if InStr(Stream, Apes1) > 0 Then 'links
Suche = Apes1
Ersetze = Apes2
pfad = "C:\Temp\test\Apes1\" & datei & ".nc"
ElseIf InStr(Stream, Apes2) > 0 Then 'rechts
Suche = Apes2
Ersetze = Apes1
pfad = "C:\Temp\test\Apes2\" & datei & ".nc"
Else
msgbox srcDATEI & " kann nicht konvertiert werden."
wscript.quit
end if
'--------------------------------------------------------------
' Ersetzen der Zeichneketten und überschreiben der datDatei
'--------------------------------------------------------------
Stream = replace(Stream, Suche, Ersetze)
Set objTextFile = objFileSystem.CreateTextFile(Pfad, True)
objTextFile.Write Stream
objTextFile.Close
if Ersetze = Apes2 then
msgbox "Datei " & DATEI & " konvertiert für Apes 1."
else
msgbox "Datei " & DATEI & " konvertiert für Apes 2."
end if
WScript.Quit
Antwort 1 von robbie17
um grundsätzlich mehrere dateien konvertieren zu können
würde ich den konvertierungsteil in ein unterprogramm stecken
und bei jedem aufruf den namen der zu konvertierenden datei übergeben:
wenn beim start kein argument übergeben wird (doppelklick)
startet der dateidialog
und das ist das größere problem
der funktioniert nämlich auf den meisten systemen nicht
probier mal bei dir aus ob du dieses objekt erstellen kannst:
wenn ja kann ich dir ein beispielskript für den dialog posten
falls nein geht es wohl nur mit einer erweiterung (tobtools)
die könnte ich dir mailen (3mb groß)
würde ich den konvertierungsteil in ein unterprogramm stecken
und bei jedem aufruf den namen der zu konvertierenden datei übergeben:
set args=wscript.arguments
if args.count then
for each datei in args
Konvertiere datei
next
else
'hier kommt der dateidialog hin
for each datei in dateidialog
Konvertiere datei
next
end if
wscript.quit
sub Konvertiere(datei)
..
..
end sub
wenn beim start kein argument übergeben wird (doppelklick)
startet der dateidialog
und das ist das größere problem
der funktioniert nämlich auf den meisten systemen nicht
probier mal bei dir aus ob du dieses objekt erstellen kannst:
set dialog = CreateObject("MSComDlg.CommonDialog")
wenn ja kann ich dir ein beispielskript für den dialog posten
falls nein geht es wohl nur mit einer erweiterung (tobtools)
die könnte ich dir mailen (3mb groß)
Antwort 2 von reto
Nö das funktioniert nicht diese sch.... Dialoge. Aber ist das wirklich so ein Problem eine Dateiöffnen Dialog. Das kann irgendwie ja nicht sein das, dass elementarste nicht funktioniert. Aber wir können ja alle unsere Freunde Micro....
Aber trotzdem vielen Dank was ist das den für ein tool?
Aber trotzdem vielen Dank was ist das den für ein tool?
Antwort 3 von robbie17
der zugriff auf dieses commondialog-teil
war wohl von ms ursprünglich nicht vorgesehen
auf manchen systemen funktioniert es aber
laut google muß dafür anscheinend irgendeine
kostenpflichtige developer-software installiert sein
ich weiß aber nicht welche
die tobtools sind eine erweiterung für den scriptinghost
es werden zusätzliche objekte und methoden bereitgestellt
sie stammen von einer begleit-cd zu einem vbs-buch
du kannst das ding hier saugen (toolkit.exe)
dies ist das beispielskript zur benutzung des multiselect-dialogs:
anscheinend funktioniert der dialog aber nur
wenn alle dateien im selben verzeichnis liegen
das beispielsskript erwartet mindestens 2 gewählte dateien
sonst funktioniert es nicht
das solltest du natürlich ändern
aber du mußt es ja sowieso umschreiben
war wohl von ms ursprünglich nicht vorgesehen
auf manchen systemen funktioniert es aber
laut google muß dafür anscheinend irgendeine
kostenpflichtige developer-software installiert sein
ich weiß aber nicht welche
die tobtools sind eine erweiterung für den scriptinghost
es werden zusätzliche objekte und methoden bereitgestellt
sie stammen von einer begleit-cd zu einem vbs-buch
du kannst das ding hier saugen (toolkit.exe)
dies ist das beispielskript zur benutzung des multiselect-dialogs:
' WICHTIGE HINWEISE - BITTE ZUERST LESEN:
' Nähere Informationen zu diesem Skript sowie eine
' ausführliche Dokumentation finden Sie in den
' Büchern 'Scripting Host' und 'Scripting Host Professional',
' erschienen im Franzis'-Verlag.
' Die meisten dieser Skripte setzen voraus, dass der WSH 2.0
' sowie das Buch-Toolkit installiert wurden. Nähere Infos hierzu
' finden Sie im Kapitel 1 der Bücher.
' Dieses Skript ist urheberrechtlich geschützt. Sie dürfen es nach
' Herzenslust verwenden oder als Basis für eigene Entwicklungen benutzen,
' und auch das Buch-Toolkit darf frei an andere weitergegeben werden.
' Voraussetzung ist nur der Hinweis auf eines der beiden oben genannten
' Bücher - ich denke, das ist fair genug!
' Diese Skripte sind für Experimentierzwecke gedacht. Ich kann
' keine Garantie dafür übernehmen, dass Skripte oder Toolkit bei Ihnen
' störungsfrei laufen. Nähere Hinweise entnehmen Sie bitte der Einleitung
' im Buch. Fragen richten Sie bitte an tob@compuserve.com.
' Fenster im Multiselect-Modus öffnen
' 4-32-2.VBS
' Alternative ohne Common Controls
flags = 512
set tools = CreateObject("systemdialog.tobtools")
dateiname = tools.OpenFiles("C:\", "Mehrere Dateien aussuchen!", _
"", flags, 1)
if len(dateiname)>0 then
dateiname = Split(dateiname, " ")
MsgBox "Es wurden " & UBound(dateiname) & _
" Dateien ausgewählt!"
ordner = dateiname(0)
liste = ""
for x=1 to ubound(dateiname)
liste = liste & dateiname(x) & vbCr
next
MsgBox liste
else
MsgBox "Sie haben auf Abbrechen geklickt!"
end if
'(C) 1999,2000 T.Weltner
anscheinend funktioniert der dialog aber nur
wenn alle dateien im selben verzeichnis liegen
das beispielsskript erwartet mindestens 2 gewählte dateien
sonst funktioniert es nicht
das solltest du natürlich ändern
aber du mußt es ja sowieso umschreiben
Antwort 4 von reto
Merci für deine Bemühungen, aber das ist eigentlich nicht das was ich suche, so muss ich immer dieses Tool laden um den Script lauffähig zu machen. Schade aber wenn das wirklich so ein rissen Problem ist lasse ich es wohl besser sein. Ausser jemand hat eine Lösung dies lauffähig zu machen ohne fremde Hilfe.
Antwort 5 von robbie17
auf das einfachste kommt man oft nicht:
du kannst ne verknüpfung zum skript
in den sendto-ordner packen
dann kannst du mehrere dateien markieren
und mit "kontextmenü -> senden an" verarzten
du kannst ne verknüpfung zum skript
in den sendto-ordner packen
dann kannst du mehrere dateien markieren
und mit "kontextmenü -> senden an" verarzten
Antwort 6 von reto
Ist zwar nicht das was ich wollte, ist aber eine sehr gute Idee. Werde ich machen. Vielen Dank

