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. Vielen Dank Nils, Das hat einwandfrei funktioniert. Vielen Lieben Dank Grüße, Andreas
  2. 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...