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 verursacht beim zweiten Durchlauf einen Fehler.
Der 1te Aufruf des Konverters läuft wunderbar.
Setze ich den Zähler falsch?
Der Aufruf
WSHShell.Run (strCommand), 4, True
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 194118
Url: https://administrator.de/contentid/194118
Printed on: April 26, 2024 at 17:04 o'clock
1 Comment
Hallo Oreuss!
Wenn Du (unnötiger Weise, wie auch "
Grüße
bastla
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