12. September 200223 j Hab folgendes VBS-Skript geschrieben: WScript.Echo WScript.Interactive 'Parameter 'Abfragen ob das Programm mit allen Parameter aufgerufen wird 'Parameterübergabe erfolgt im Array Script.Arguments If WScript.Arguments.count() <> 3 And WScript.Arguments.count() <> 4 Then msgbox "Parameter benötigt!" & vbCr & chr(10) & "1. Dateiname/Maske z.B. *.* *.txt" & vbCr & chr(10) & "2. Dateiname Ausgabedatei" & vbCr & chr(10) & "3. Befehl (Platzhalter fürDateiname %1)" & vbCr & chr(10) & "4. Optional: Arbeitsverzeichnis" WScript.Quit(ExitCode) End If 'Übertrgen übergebenen Parameter in Variablen ParmFileFilter = WScript.Arguments(0) ParmOutputfile = WScript.Arguments(1) ParmCommands = WScript.Arguments(2) If WScript.Arguments.count() = 4 Then ParmFolder = WScript.Arguments(3) End If 'Deklaration 'Deklarieren der Objekte fs und FileFilter Set fs = CreateObject("Scripting.FileSystemObject") Set shell = CreateObject("wscript.shell") 'Set FileFilter = CreateObject("filefilter.wsc") 'Plausi 'Überprüfen ob übergebener Ordner existiert If ParmFolder <> "" And fs.FolderExists(ParmFolder) = False Then MsgBox "Parameter 4: Ordner nicht Vorhanden!" WScript.Quit(ExitCode) End If 'Wenn kein Filter Filter = *.* If ParmFileFilter = "" Then ParmFileFilter = "*.*" End If 'Wenn keine Ordner übergeben wird Ordner in dem das Programm liegt nehmen If ParmFolder = "" Then ParmFolder = fs.getabsolutepathname(".") & "\" End If ParmOutputfile = ParmFolder & ParmOutputfile 'OrdnerAuslesen Set FileFolder = fs.getfolder(ParmFolder) Set folder = fs.GetFolder(ParmFolder) Set files = folder.files For Each filename In files 'Dateiname aus Pfad und Name i = split(filename, "\") filename = i(Ubound(i)) If FileFilter(filename, ParmFileFilter) Then 'Dateiname ohne Endung i = split(filename, ".") filename = i(0) '$1 in der Befehlsübergabe mit dem Dateinamen ersetzten Commands = Commands & replace(ParmCommands, "$1", filename) & vbCr & chr(10) End If Next 'Wenn keine Dateien gefunden If Commands = "" Then MsgBox "Keine Datei gefunden!" WScript.Quit(ExitCode) End If 'Wenn Datei schon vorhanden Inhalt anhängen If fs.FileExists(ParmOutputfile) Then Set InputFile = fs.OpenTextFile(ParmOutputfile) 'Inhalt lesen und neuen Inhalt anhängen Commands = Inputfile.readAll() & Commands End If 'Datei schreiben Set Outputfile = fs.CreateTextFile(ParmOutputfile, True) Outputfile.Write (Commands) Outputfile.Close 'Filefilter funktion Function FileFilter(filename, ParmFileFilter) 'Bei *.* nicht Prüfen If ParmFileFiltert = "*.*" Then FileFilter True End If 'Beim stern splitten FF = split(ParmFileFilter, "*") If count(FF) > 2 Then MsgBox "Parameter 1: Falsche Form(Gültig *.txt oder xyz*.txt)!" WScript.Quit(ExitCode) End If 'Überprüfen ob Teile des Dateinamen gleich der Teile in der Maske If count(FF) = 2 Then FilterLeft = FF(0) FilterRight = FF(1) If LCASE(FilterLeft) = LCASE(left(filename, len(FilterLeft))) And LCASE(FilterRight) = LCASE(right(filename, len(FilterRight))) Then FileFilter = True Exit Function End If End If FileFilter = False End Function Function count(arr) For Each val In arr a = a + 1 Next count = a End Function und das ding läuft im Batch ab sprich er sperrt die CMD-Line nicht obwohl WScript.Interactive = true ist. Ich bin am verzweifeln wo dran kann das liegen ? Spoom
12. September 200223 j Ruf den script mal über die Kommandozeile mit cscript.exe <<name_des_scripts.vbs>> auf. Ich hoffe das hilft.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.