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