oreuss
Goto Top

Dateiliste aus Array verarbeiten

Hallo,

ich schreibe gerade an einem VBS-Script, dass an eine Dateiliste aus einem Array verarbeiten und an ein Programm übergeben soll.

Folgende Funktionen hat das Skript:
- Dateiliste eines vorgegebenen Quellverzeichnis auslesen und an einen Array übergeben
- Dem Konvertierungsprogramm Pfade und Dateinamen des Quell- und Zielverzeichnisses übergeben
- Quelldaten in das Zielverzeichnis verschieben

Ich danke schonmal für Beiträge.
Gruß von Jan

Mit dem was ich bisher programmierte habe ich folgendes Problem:


Der Aufruf
WSHShell.Run (strCommand), 4, True
verursacht beim zweiten Durchlauf einen Fehler.
Der 1te Aufruf des Konverters läuft wunderbar.
Setze ich den Zähler falsch?

Option Explicit
' ************************  
' ** Konstantendeklaration  
' ************************  
Dim Von, Nach, prginstall, logext, convext
Von = "D:\ModelleKonverter_1EINGANG" ' Quellpfad  
Nach = "D:\ModelleKonverter_2AUSGANG" ' Zielpfad  
'prginstall = "C:\Program Files (x86)\Notepad++\notepad++.exe"  
prginstall = "C:\Program Files (x86)\3D-Tool V10\Convert.exe"  
logext = ".txt"  
convext = ".stp"  
' ***********************  
' ** Variablendeklaration  
' ***********************  
Dim StrF1(), i, j, StrStartfolder, ObjFSO, Datei, ObjFolder, quelldok, zieldok
Dim D, T, tmp, Timestamp, logdata, WSHShell, strCommand, zielmove, strCommandd
Set ObjFSO       = CreateObject("Scripting.FileSystemObject")  
Set Datei      = CreateObject("Scripting.FileSystemObject")  
Set WSHShell     = WScript.CreateObject("WScript.Shell")  
'einlesen der im Verzeichnis enthaltenen Dateinamen in ein Array  
i=0
if not ObjFSO.FolderExists(Von) Then
	MsgBox "Den Startordner gibt es gar nicht!",vbCritical,"Arrayprog:"  
	wscript.quit
Else
	Set ObjFolder = ObjFSO.Getfolder(Von)
	redim StrF1(ObjFolder.files.count -1)
	For Each Datei in ObjFolder.Files
		StrF1(i) = Datei.Name
		i=i+1
	Next
End If
i=0
For each Datei in StrF1
	' ********************  
	' ** Modelle umwandeln  
	' ********************  
	tmp = Replace(now,":", "-")  
	Timestamp = Replace (tmp,".", "_")  
	quelldok = Von & "\" & StrF1(i)  
	zieldok = Nach & "\" & StrF1(i) & convext  
	zielmove = Nach & "\" & StrF1(i)  
	logdata = Nach & "\" & StrF1(i) & "_" & Timestamp & logext  
	
' Befehlszeile fuer den Konverter  
	strCommand = Chr(34) & prginstall & Chr(34) & " -i " & Chr(34) _  
	& quelldok & Chr(34) & " -o " & Chr(34) & zieldok & Chr(34) _  
	& " -ounit mm -healing 1 -hidden 0 -curves 1 -points 1 -log " _  
	& Chr(34) & logdata
	' & Chr(34) & " -w"  
	
' Aufruf des Konverters  
	'Wscript.Echo strCommand  
	WSHShell.Run (strCommand), 4, True
	Set WSHShell = Nothing
	Set ObjFSO = Nothing
	' *****************************************  
	' ** Quelldokument in den Zielpfad kopieren  
	' *****************************************  
	strCommandd = Chr(34) & quelldok & "," & Chr(34) & Nach  
	Set ObjFSO      = CreateObject("Scripting.FileSystemObject")  
	'objFSO.MoveFile strCommandd ,True  
	'Wscript.Echo strCommandd  
	objFSO.CopyFile quelldok, zielmove, True
	Set ObjFSO = Nothing
	' ************************  
	' ** Quelldokument löschen  
	' ************************  
	Set ObjFSO      = CreateObject("Scripting.FileSystemObject")  
	objFSO.DeleteFile quelldok
	Set ObjFSO = Nothing
	i=i+1
Next
' ***************************************  
' ** Wenn Verzeichnis leer Script beenden  
' ***************************************  
If i = 0 Then
	MsgBox "Keine Daten in dem Quellverzeichnis vorhanden",vbCritical,"Arrayprog:"  
    WScript.Quit
End If
WScript.Quit

Content-Key: 194118

Url: https://administrator.de/contentid/194118

Printed on: April 26, 2024 at 17:04 o'clock

Member: bastla
bastla Nov 12, 2012 at 16:26:01 (UTC)
Goto Top
Hallo Oreuss!

Wenn Du (unnötiger Weise, wie auch "ObjFSO") das "WshShell"-Objekt nach der ersten Verwendung vernichtest, brauchst Du Dich nicht darüber zu wundern, wenn es beim zweiten Array-Element nicht mehr vorhanden ist (was auch aus der - nicht geposteten - Fehlermeldung hervorgehen sollte) ...

Grüße
bastla