Supportnet Computer
Planet of Tech

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:


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?

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:


' 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

Antwort 6 von reto

Ist zwar nicht das was ich wollte, ist aber eine sehr gute Idee. Werde ich machen. Vielen Dank

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: