Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Routine zum suchen von von Dateien und speichern deren Namen sowie Werte als Variablen für die weitere Verwendung

Mitglied: Kame-hame-ha

Kame-hame-ha (Level 1) - Jetzt verbinden

16.04.2012 um 10:10 Uhr, 2592 Aufrufe, 9 Kommentare

Hallo allerseits,
habe mich heue extra registriert, weil ich einfach nicht schnell genug weiterkomme.  Bis jetzt konnte ich mit Hilfe der geposteten Beiträge mich sehr gut voran bewegen. Nun stehe ich vor einem Problem. Ich benötige ein VBS oder Batch Script für die folgende Aufgabe, am besten an einem Beispiel zu erläutern:
es gibt einen Verzeichnis D:\TXT. Hier liegen fünf txt-files
000111_D.txt
000113_C.txt
000234_A.txt
000456_B.txt
000832_A.txt
Der Inhalt dieser Dateien ist ein Wert, z.B. i.O oder n.i.O

In einem anderen Verzeichnis D:\XML liegen fünf xml-files:
000111_A_Part1.xml
000113_C_Part2.xml
000234_A_Product1.xml
000456_B_Product2.xml
000832_A_Part1.xml

Diese XML-Dateien beinhalten irgendwo einen Eintrag
<UserValue value="n.d." title="test_result"></UserValue>

Ich habe als Einstieg einen VBScript geschrieben, der eine festgelegte XML nach diesem Eintrag druchsucht und den Wert bei value=”n.d“ durch einen festgelegten Wert ersetzt.

01.
'Variablen initialisieren 
02.
Dim oldvalue  
03.
Dim newvalue  
04.
Dim newcontent 
05.
Dim content 
06.
 
07.
'Variablen setzen 
08.
oldvalue = "value=" & _ 
09.
		Chr(34) & "n.d." & Chr(34) & _  
10.
		" " & _ 
11.
		"title=" & _ 
12.
		Chr(34) & "test_result" & Chr(34) 
13.
 
14.
newvalue = "value=" & _ 
15.
		Chr(34) & "i.o." & Chr(34) & _  
16.
		" " & _ 
17.
		"title=" & _ 
18.
		Chr(34) & "test_result" & Chr(34) 
19.
 
20.
'Datei öffnen und auslesen 
21.
Set FSO = CreateObject("Scripting.FileSystemObject") 
22.
Set File = FSO.OpenTextFile("D:\XML\000093_A_Part1.xml", 1) 
23.
content = File.ReadAll 
24.
File.Close 
25.
 
26.
'String finden und ersetzen 
27.
newcontent= Replace(content, oldvalue , newvalue) 
28.
 
29.
 
30.
'In Datei schreiben 
31.
Set File = FSO.OpenTextFile("D:\XML\000093_A_Part1.xml", 2) 
32.
File.Write newcontent  
33.
File.Close
Das Ziel ist es aber, dass ein Script in das Verzeichnis D:\TXT geht, die erste Datei öffnet und sich den Namen der Datei und den Inhalt (also als Variablen) merkt . Dann geht er in das D:\XML Verzeichnis, sucht eine XML, die den gleichen Namen (bzw. die ersten 8 Stellen sind identisch) hat wie die entsprechende txt-datei, und schreibt den gespeicherten Wert in das value=““ .
Das Script wird solange ausgeführt, bis er alle txt-dateien abgearbeitet hat.
Vielleicht hat einer von euch eine Idee, bin für jede Lösung dankbar.
Mitglied: Kame-hame-ha
17.04.2012 um 14:09 Uhr
Hmm, schade, dass sich niemand gemeldet hat...
Bitte warten ..
Mitglied: Biber
17.04.2012 um 14:14 Uhr
Zitat von Kame-hame-ha:
Hmm, schade, dass sich niemand gemeldet hat...
Hmmm, warte doch noch einen Moment - heute war doch wieder bis 13:30h Streiktag bei der ver.di und es sind bestimmt noch nicht alle zurück vom Marktplatz.
Bitte warten ..
Mitglied: bastla
17.04.2012 um 16:45 Uhr
Hallo Kame-hame-ha und ein etwas verspätetes Willkommen im Forum, hallo Biber!

Vor lauter Arbeit war ich noch nicht mal zum Streiken gekommen ...
Verstehe ich das richtig, dass die XML-Dateien nach dem sich aus der Textdatei ergebenden Beginn des Namens noch einen nicht bekannte Zusatz (wie "_Part1") enthalten?

Grüße
bastla
Bitte warten ..
Mitglied: Kame-hame-ha
17.04.2012 um 16:54 Uhr
Hallo Biber und bastla,

freut mich, dass ihr euch gemeldet habt. Bei uns auf Arbeit hat nur das Internet gestreikt, das würde ich aber nicht auf ver.di schieben

Ja, das stimmt. Die XML-Datein sind exportierte Objekte aus der Datenbank, ihre Benennung kann man nicht ändern. Aber die Namen der korrespondierenden Dateien wären, wie hier im Beispiel, bei den ersten 8 Zeichen identisch.
Bitte warten ..
Mitglied: bastla
17.04.2012 um 17:28 Uhr
Hallo Kame-hame-ha!

Dann brauchst Du 2 Schleifen - die erste, um alle Textdateien durchzuackern, und die zweite, um aus allen XML-Dateien die richtige herauszusuchen - ungetestet etwa so:
01.
TXTOrdner = "D:\TXT" 
02.
XMLOrdner = "D:\XML" 
03.
Alt = "<UserValue value=""n.d."" title=""test_result""></UserValue>" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
 
07.
For Each TXT In fso.GetFolder(TXTOrdner).Files 'alle Textdateien durchgehen 
08.
    TXTInhalt = TXT.OpenAsTextStream.ReadLine 'erste Zeile der Datei einlesen 
09.
    Neu = Replace(Alt, "n.d.", TXTInhalt) 'gelesenen Wert in den Ersatz-String einbauen 
10.
    TXTName = LCase(fso.GetBaseName(TXT.Name)) 'Dateinamen ohne Typ in Kleinbuchstaben erzeugen 
11.
    LName = Len(TXTName) 'Länge des Namens nur einmal, daher vor der Schleife, ermitteln 
12.
    For Each XML In fso.GetFolder(XMLDateien).Files 'alle XML-Dateien durchgehen 
13.
        If LCase(Left(XML.Name, LName)) = TXTName Then 'Wenn der Anfang des Dateinamens mit dem Namen der Textdatei übereinstimmt ... 
14.
            XMLInhalt = XML.OpenAsTextStream.ReadAll '... Dateiinhalt auslesen und ... 
15.
            fso.CreateTextFile(XML.Path).Write Replace(XMLInhalt, Alt, Neu) '... mit ersetztem Text neue Datei erzeugen 
16.
            Exit For 'Fertig - übrige XML-Dateien interessieren nicht mehr 
17.
        End If 
18.
    Next 
19.
Next
Grüße
bastla

[Edit] Zeile 13 - hoffentlich - richtig gestellt [/Edit]
Bitte warten ..
Mitglied: Kame-hame-ha
17.04.2012 um 18:00 Uhr
danke bastla!

Hab's getestet, läuft noch nicht . Aber das ist erstmal kein Problem. Jetzt habe ich einen Ansatz und kann darin basteln! Wenn ich es hinbekommen habe, dann poste ich das fertige Script hier rein, ansonsten werde mich hilferufend nochmal melden !

Schöne Grüße


Kame-hame-ha
Bitte warten ..
Mitglied: Kame-hame-ha
17.04.2012 um 18:03 Uhr
Achso, was ich noch sagen wollte, das Script siehr so einfach aus...genial!
Bitte warten ..
Mitglied: Kame-hame-ha
17.04.2012 um 18:32 Uhr
Geil! Funktioniert!

An der Zeile 13 lag's und an der Zeile 12 statt XMLDateien, muss "XMLOrdner" stehen also hier nochmal das Script:

01.
TXTOrdner = "D:\TXT" 
02.
XMLOrdner = "D:\XML" 
03.
Alt = "<UserValue value=""n.d."" title=""test_result""></UserValue>" 
04.
 
05.
Set fso = CreateObject("Scripting.FileSystemObject") 
06.
 
07.
For Each TXT In fso.GetFolder(TXTOrdner).Files 'alle Textdateien durchgehen 
08.
    TXTInhalt = TXT.OpenAsTextStream.ReadLine 'erste Zeile der Datei einlesen 
09.
    Neu = Replace(Alt, "n.d.", TXTInhalt) 'gelesenen Wert in den Ersatz-String einbauen 
10.
	MsgBox Neu 
11.
    TXTName = LCase(fso.GetBaseName(TXT.Name)) 'Dateinamen ohne Typ in Kleinbuchstaben erzeugen 
12.
    LName = Len(TXTName) 'Länge des Namens nur einmal, daher vor der Schleife, ermitteln 
13.
    For Each XML In fso.GetFolder(XMLOrdner).Files 'alle XML-Dateien durchgehen 
14.
        If LCase(Left(XML.Name, LName)) = TXTName Then 'Wenn der Anfang des Dateinamens mit dem Namen der Textdatei übereinstimmt ... 
15.
            XMLInhalt = XML.OpenAsTextStream.ReadAll '... Dateiinhalt auslesen und ... 
16.
            fso.CreateTextFile(XML.Path).Write Replace(XMLInhalt, Alt, Neu) '... mit ersetztem Text neue Datei erzeugen 
17.
            Exit For 'Fertig - übrige XML-Dateien interessieren nicht mehr 
18.
        End If 
19.
    Next 
20.
Next
Danke nochmal vielmals! Super gelöst!
Bitte warten ..
Mitglied: bastla
17.04.2012 um 19:13 Uhr
Hallo Kame-hame-ha!

Sorry - hab' das nur so auf die Schnelle hingeschrieben (Zeile 13 war mir dann aber wenigstens selbst noch aufgefallen) ...
Noch ein Tipp: Anstelle von
MsgBox Neu
kannst Du auch
WScript.Echo Neu
verwenden - Vorteil: Wenn Du aus einer CMD-Shell mit
cscript Script.vbs
testest, brauchst Du nicht jede Ausgbae mit OK zu bestätigen (und bei defaultmäßiger Ausführung über "wscript" wird trotzdem eine MsgBox verwendet) ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Wert in Registry suchen und in Variable speichern

Frage von J.TrollBatch & Shell2 Kommentare

Hi Liebes Form Ich hab ein Problem mit einem denke ich recht einfachen Programmteil. Vielleicht kann mir jemand von ...

VB for Applications

Datei mit variablem Namen einlesen und als Excel speichern

gelöst Frage von AnrionVB for Applications1 Kommentar

Hallo Forum, Ich habe ein Problem. -Es muss eine Datei (CLV) eingelesen werden. Öffne ich diese in Excel, so ...

Batch & Shell

Wert aus Batch Schleife in Variable speichern

gelöst Frage von anmelderBatch & Shell5 Kommentare

Ich möchte aus einem Verzeichnis alle Dateien mit einer bestimmten Endung anzeigen lassen. Die Dateien sind nummeriert. Der Nutzer ...

Batch & Shell

Wert in einer TXT Datei suchen

Frage von nolle99Batch & Shell11 Kommentare

Hallo Leute Ich habe ein Problem Ich habe mir von meiner Seite alle URLs in einer TXT gespeichert (30.000 ...

Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 4 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 10 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 TagSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server23 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless22 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...