Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

Windows Forum — Scripting


Alles zum Thema System Administration Scripting — Q & A zum Thema Scripting: Batch, VBS, WMI, PowerShell


Antwort
     
Themen-Optionen
Alt 18.03.2008, 11:49   #1
Newbie
 
Offline
Registriert seit: 03-2008
Ort: irgendwo in den Alpen
Beiträge: 7
string abfragen und ändern

Hallo MCSE Boardianer

Dies ist mein 1. Post.

Lese schon seit einiger Zeit Beiträge von diesem Forum, und habe mich vor kurzem auch registriert. Nun komme ich leider zu meinem "Problem":

Wir haben hier in der Firma eine Datei die einen bestimmten String hat, und jeden Tag mit einem Batch File geändert werden muss. Diese Datei hat eine für Windows unbekannte Dateiendung, jedoch kann man sie mit dem Editor öffnen da es eigentlich ein reines txt File ist. Nun zu meiner Aufgabe:

Ich soll in dieser Datei einen bestimmten String suchen, ihn ändern, und am Schluss wieder speichern. Mein Ansatz ist, diese Datei temporär zu kopieren, in *.txt zu ändern, den string zu suchen, ändern, abspeichern, und wieder umbenennen und wieder ins richtige Verzeichnis kopieren.

Die Batch Datei habe ich bis jetzt soweit fertig:

copy D:\test.owp D:\temp\
cd temp
rename test.owp test.txt
findstr /C:"<Version>34</Version>" test.txt


Nun muss ich eben die Zahl 34 einfach durch etwas anderes ersetzen, egal was. Es darf einfach nicht gleich sein. Und da ist die Stelle die ich nicht weiter weiss: Gibt es ein Batch Befehl, der einen String ersetzen kann, oder wie könnte ich das sonst lösen?

Bin für jeden Tipp dankbar!!!

Freundliche Grüsse aus der Schweiz, it_practice

PS: Sorry, falls der Post zu lange ist...
    Mit Zitat antworten
Alt 18.03.2008, 13:25   #2
Expert Member
 
Benutzerbild von Cybquest
 
Offline
Registriert seit: 12-2006
Ort: Weinsberg
Beiträge: 1.523
Mit VB-Script könnte man es z.B. so machen (hab ich irgendwo im Internet beim googeln gefunden ):
Code:
varDatei="D:\test.owp"
varSearch="<Version>34</Version>"
varReplace="<Version>35</Version>"
Set MyFiles = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1, ForWriting = 2
Set f = MyFiles.OpenTextFile(varDatei, ForReading)
Text = f.ReadAll
Set f = MyFiles.OpenTextFile(varDatei, ForWriting, True)
f.Write Replace(Text, varSearch, varReplace,1,-1,1)
Die Variablen könnten auch als Übergabeparameter definiert werden und dann mit
Code:
WScript.Arguments.Item(x)
vorher ausgelesen werden (wobei x für den Parameter steht: 0 der erste, 1 der zweite...)

Signatur
My name is Frank, you can say you to me.

    Mit Zitat antworten
Alt 19.03.2008, 11:21   #3
Newbie
 
Offline
Registriert seit: 03-2008
Ort: irgendwo in den Alpen
Beiträge: 7
Hallo Cybquest

Danke vielmals für deine Antwort...

Leider bin ich nicht so gut im VB... , darum meine Frage:

Das Script sollte jeden Tag eine andere Zahl haben, in diesem Fall:

heute 34, morgen 35, übermorgen 36...

weisst du da gerade die Lösung?

Danke nochmals für die Antwort und den Ansatz...
    Mit Zitat antworten
Alt 19.03.2008, 11:42   #4
Expert Member
 
Benutzerbild von Cybquest
 
Offline
Registriert seit: 12-2006
Ort: Weinsberg
Beiträge: 1.523
Like this?

Code:
Set MyFiles = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1, ForWriting = 2

varDatei="D:\test.owp"
varCntDatei="D:\Counter.txt"
Set f = MyFiles.OpenTextFile(varCntDatei, ForReading)
varCount = f.ReadAll
varCountNeu = varCount +1
Set f = MyFiles.OpenTextFile(varCntDatei, ForWriting, True)
f.Write varCountNeu

varSearch="<Version>" & varCount & "</Version>"
varReplace="<Version>" & varCountNeu & "</Version>"

Set f = MyFiles.OpenTextFile(varDatei, ForReading)
Text = f.ReadAll
Set f = MyFiles.OpenTextFile(varDatei, ForWriting, True)
f.Write Replace(Text, varSearch, varReplace,1,-1,1)
Hab einfach mal ne "counter.txt" angelegt. Dort steht am Anfang nur die erste zu suchende Zahl und wird dann immer um eins erhöht.

Signatur
My name is Frank, you can say you to me.

    Mit Zitat antworten
Alt 19.03.2008, 13:47   #5
Newbie
 
Offline
Registriert seit: 03-2008
Ort: irgendwo in den Alpen
Beiträge: 7
OK... danke vielmals...

wenn ich das jetzt richtig verstanden habe, muss ich deinen 1. Post in eine .vbs Datei schreiben und den 2. Post in die counter.txt? Oder bin ich auf dem Holzweg?
    Mit Zitat antworten
Alt 19.03.2008, 14:00   #6
Expert Member
 
Benutzerbild von phoenixcp
 
Offline
Registriert seit: 02-2004
Ort: Radebeul
Beiträge: 5.470
Falscher Holzweg...

Der Inhalt der 2.ten Postings von Cybquest gehört in die vbs. Des Weiteren musst du eine Datei counter.txt anlegen, in der die Anfangszahl steht. Den Pfad zur counter.txt musst du dann natürlich bei dir noch anpassen.

Signatur
MfG

Carsten Paul
MCSEBoard.de SQL Blog
Kein Support per PN, dafür ist das Forum da!

In Memory of LukasB

    Mit Zitat antworten
Alt 19.03.2008, 14:19   #7
Newbie
 
Offline
Registriert seit: 03-2008
Ort: irgendwo in den Alpen
Beiträge: 7
hmmm, ist nicht gerade das, was ich wollte...

das Script funktioniert, doch die Zahl wird im counter selbst erhöht, und nicht in der owp datei. OK nochmal:

ich wollte die .owp datei temporär kopieren, in .txt umbenennen, damit ich sie bearbeiten kann. Dann sollte das Script den String suchen, und eben mit irgendetwas ersetzen (um eins erhöhen, aktuelles Datum...) und dann abspeichern. Dann wird die .txt datei wieder in .owp umgewandelt, und an die richtige Stelle kopiert.

das temporäre kopieren, umbennen und wieder zurück kopieren ist kein Problem, das mache ich mit einer Batch Datei, aber eben den String auslesen und ändern weiss ich nicht, wie man das mit einem Script lösen kann.

Sorry falls ich mein Problem nicht klar ausgedrückt habe...
    Mit Zitat antworten
Alt 19.03.2008, 15:18   #8
Expert Member
 
Benutzerbild von Cybquest
 
Offline
Registriert seit: 12-2006
Ort: Weinsberg
Beiträge: 1.523
Hmmm... bei mir funktioniert das Script.
Es ändert halt direkt die OWP-Datei ohne den Umweg über txt.

Also beim ersten Durchgang muss die Zahl in counter.txt identisch mit der Zahl in test.owp sein! Und in der counter.txt muss sie ohne Leerzeichen, ohne Zeilenumbuch danach o.ä. drin stehen! Sonst gehts nicht...

Signatur
My name is Frank, you can say you to me.

    Mit Zitat antworten
Alt 19.03.2008, 15:31   #9
Newbie
 
Offline
Registriert seit: 03-2008
Ort: irgendwo in den Alpen
Beiträge: 7
ach so...

hab die counter.txt nochmal erstellt, ohne leerzeichen, zeilenumbruch, etc.

und jetzt klappts!

Danke vielmals
    Mit Zitat antworten
Alt 11.04.2008, 10:34   #10
Newbie
 
Offline
Registriert seit: 03-2008
Ort: irgendwo in den Alpen
Beiträge: 7
Hallo zusammen

muss mich wieder melden, der Auftraggeber möchte eine Änderung am Script.

Er möchte, dass das Script ohne diese Counter Datei funktioniert. Hab mich jetzt ein klein wenig mit dem Script auseinandergesetzt, jedoch kam ich nicht sehr weit. Ich hab es bereits zu Stande gebracht, dass er die Zahl aus der Originaldatei ausliest, und auch ersetzt, jedoch fällt dann der ganze Rest weg. So, dass am Schluss nur die ersetzte Zahl in der Datei steht, was mir nicht viel bringt.

Hier mal mein aktueller Code:

Code:
Set MyFiles = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1, ForWriting = 2

varDatei="U:\officeatwork_Script\michelgruppech.owp"
Set f = MyFiles.OpenTextFile(varCntDatei, ForReading)
varCount = f.ReadAll
varCountNeu = varCount +1
Set f = MyFiles.OpenTextFile(varDatei, ForWriting, True)
f.Write varCountNeu

varSearch="<Version>" & varCount & "</Version>"
varReplace="<Version>" & varCountNeu & "</Version>"

Set f = MyFiles.OpenTextFile(varDatei, ForReading)
Text = f.ReadAll
Set f = MyFiles.OpenTextFile(varDatei, ForWriting, True)
f.Write Replace(Text, varSearch, varReplace,1,-1,1)
Vielen Dank schon im Voraus...
    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
OWA / Login String? Bjoern28 MS Exchange Forum 2 04.05.2010 15:26
BIOS-Settings über Windows abfragen und evtl. ändern (WoL) Edu Windows Forum — Allgemein 5 22.08.2006 09:04
connection string für druckerinstallation crazyk Windows Forum — Allgemein 4 24.06.2005 13:27
String Manipulation in SQL thumb MS SQL Server Forum 3 19.05.2004 17:53


Alle Zeitangaben in MEZ/CET. Es ist jetzt 15:22 Uhr. Seite generiert in 0,041 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang