Nowe101
-
Gesamte Inhalte
3 -
Registriert seit
-
Letzter Besuch
Beiträge erstellt von Nowe101
-
-
vor 44 Minuten schrieb NilsK:
Hier könntest du die Bedingung mit AND um deine zweite Vorgabe zum Dateinamen ergänzen, vermutlich mit
Instr(objFile.Name, "deine-Zeichenkette") > 0
Vielen Dank Nils,
Das hat einwandfrei funktioniert.
Vielen Lieben Dank
Grüße, Andreas
-
Hallo Zusammen,
Ich habe mir ein VB-Script aus mehreren Schnippseln zusammen gebastelt das soweit auch ohne Probleme funktioniert.
Nun habe ich in dem Ordner wo die betreffenden XML-Dateien liegen auch andere Auch andere XML-Dateien die nicht bearbeitet werden sollen.
Wie kann ich es bewerkstelligen das nur XML-Dateien bearbeitet werden die einen bestimmten Text im Dateinamen haben?
Die Dateien sind immer so benannt:
7542_PAUFTRAG.XML
7542_PM.XML
7542_PM_HISTORIE.XML
7542_PM_HISTORIE_DOKUMENTE.XML
Die Zahl vor dem Unterstrich ist eine Fortlaufende Nummer die beim erstellen der Datei automatisch generiert wird.
In meinem VB-Script möchte ich nur Dateien bearbeiten die mit _PM.XML enden (Also diese Dateien wie die zweite in der Auflistung oben).
Das Script selbst wird über einen Batch aufgerufen.
If WScript.Arguments.Count < 1 Then WScript.Echo "Syntax:" & _ vbLf & """" & WScript.ScriptName & """ ""Pfad"" [""FixerWert""]" & _ vbLf & vbLF & "Returncodes:" & _ vbLf & "3 zu wenig Argumente" & _ vbLf & "2 Verzeichnis nicht gefunden" & _ vbLf & "1 eine oder Mehrere Dateien konnten nicht verarbeitet werden" & _ vbLf & "0 alle gefundenen Dateien erfolgreich verarbeitet" & vbLf WScript.Quit 3 End If Set objFSO = CreateObject("Scripting.FileSystemObject") strSrcDir = objFSO.GetAbsolutePathName(WScript.Arguments(0)) If Not objFSO.FolderExists(strSrcDir) Then WScript.Quit 2 strLogPath = objFSO.GetParentFolderName(WScript.ScriptFullName) strLogName = objFSO.GetBaseName(WScript.ScriptName) & " " & _ Year(Now) & "-" & Right("0" & Month(Now), 2) & "-" & Right("0" & Day(Now), 2) & " " & _ Right("0" & Hour(Now), 2) & "-" & Right("0" & Minute(Now), 2) & "-" & Right("0" & Second(Now), 2) & _ ".log" Set objLogFile = objFSO.CreateTextFile(objFSO.BuildPath(strLogPath, strLogName), True) iSucc = 0 iErr = 0 For Each objFile In objFSO.GetFolder(strSrcDir).Files If LCase(objFSO.GetExtensionName(objFile.Name)) = "xml" Then iRet = Process_XML(objFile.Path) If iRet > 0 Then objLogFile.WriteLine """" & objFile.Name & """ - " & iRet & " Knoten verarbeitet." iSucc = iSucc + 1 Else objLogFile.WriteLine """" & objFile.Name & """ - Verarbeitung fehlgeschlagen." iErr = iErr + 1 End If End If Next objLogFile.Close strMessage = iSucc + iErr & " Dateien verarbeitet." & _ vbLf & iSucc & " erfolreich" & _ vbLf & iErr & " fehlgeschlagen" & _ vbLf & _ vbLf & "Möchten Sie sich die Log-Datei anschauen?" If iErr = 0 Then cButtons = vbQuestion Else cButtons = vbCritical End If If MsgBox(strMessage, cButtons + vbYesNo, WScript.ScriptName) = vbYes Then Set objShell = CreateObject("WScript.Shell") objShell.Run "notepad.exe """ & objFSO.BuildPath(strLogPath, strLogName) & """" End If If iErr > 0 Then WScript.Quit 1 Function Process_XML(ByRef strXmlDoc) Dim objxmlDoc, objNodes, objNodes1, xmlNode, xmlNode1 Set objXmlDoc = CreateObject("Microsoft.XMLDOM") objXmlDoc.async = False objXmlDoc.load(strXmlDoc) iCounter = 0 Set parentNode = objXmlDoc.documentElement.SelectSingleNode("//KOSTEN") Set objNodes = objXmlDoc.documentElement.SelectNodes("//KOSTEN/KOST_BETRAG") Set objNodes1 = objXmlDoc.documentElement.SelectNodes("//KOSTEN/KOST_BASIS") IF ParentNode Is Nothing Then MsgBox "Der Knoten ""KOSTEN"" wurde nicht gefunden!", vbCritical, "Fehler" iCounter = iCounter + 0 Else For Each xmlNode in objNodes xmlNode.text = "" iCounter = iCounter + 1 Next For Each xmlNode1 in objNodes1 xmlNode1.text = "" iCounter = iCounter + 1 Next End If If iCounter > 0 Then objXmlDoc.save(strXmlDoc) objXmlDoc.save(strXmlDoc) Set objXmlDoc = Nothing Process_XML = iCounter End Function
Würde mich sehr über Anregungen und Lösungen freuen.
Vielen Dank.
XML nach Teil des Dateinamens in VBS bearbeiten
in Windows Forum — Scripting
Geschrieben
Ist erledigt
danke für eure Hilfe!