Jump to content

Nowe101

Members
  • Gesamte Inhalte

    3
  • Registriert seit

  • Letzter Besuch

Fortschritt von Nowe101

Rookie

Rookie (2/14)

  • Erste Antwort
  • Erster eigener Beitrag
  • Eine Woche dabei
  • Einen Monat dabei
  • 1 Jahre dabei

Neueste Abzeichen

2

Reputation in der Community

  1. Ist erledigt danke für eure Hilfe!
  2. Vielen Dank Nils, Das hat einwandfrei funktioniert. Vielen Lieben Dank Grüße, Andreas
  3. 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.
×
×
  • Neu erstellen...