butterblume
Goto Top

VBScript - Wert verändern

Hallo zusammen,
hier habe ich einen VBScript geschrieben zum in einer Datei den Wert nach "TEST=" zu verändern!!!
Das ist die Substitute.val Datei:

[SUBSTITUTIONS]
GESCHWINDIGKEIT=                                                                                                                                                                                                            
TIME=12:00:00 AM
SPURS=86
JAZZ=94
TEMPERATURE=82
GAME_TIME=15:04
BUSH=49.9%
GORE=50.1%
TEST=rot

[PAGE_SELECTION]
PROJECT=default
PAGE=Sponsor0
PREVIEW=0
DISPLAY=0
TRANSITIONING=0

[SPECIAL]
LOAD_VARIABLE_DLL=1

Nun musste ich in meinem Script das kompliziert machen mit Kopieren und Löschen, weil in VBS man die Dateien nicht verändern kann. Nur dazu schreiben.
Hier mein Code:

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

strEingabe = InputBox("Geben Sie die Variable ein")  
strNeueZeile = "TEST="& strEingabe  

varDatei="d:\Substitute.val"  
varTmpDatei="d:\TestOut.val"  
Set fin = MyFiles.OpenTextFile(varDatei, ForReading)
Set fout = MyFiles.OpenTextFile(varTmpDatei, ForWriting, True)

strSearch = "TEST="  

do while not fin.AtEndOfStream
       strline = fin.readLine()
       if instr(1,strline, strSearch) = 0 then		
               'Zu entfernende Zeile nicht gefunden, also Zeile ausgeben  
               fout.writeline strline
	else fout.WriteLine strNeueZeile
	end if
loop


Dim fso, objFile
Set fso = CreateObject("Scripting.FileSystemObject")  
Set objFile = fso.GetFile("d:\Substitute.val") ' hier mit Pfadangabe  
objFile.Name = "d:\Substitute.txt" ' hier ohne Pfadangebe  

   
   dateiAngabe="d:\Substitute.txt"  
   Set fso = CreateObject("Scripting.FileSystemObject")  
   fso.DeleteFile(dateiAngabe)


Set fso = CreateObject("Scripting.FileSystemObject")  
Set objFile = fso.GetFile("d:\TestOut.val") ' hier mit Pfadangabe  
objFile.Name = "Substitute.val" ' hier ohne Pfadangebe  

Das ist nicht fertig, der Script wird viel umfangreicher. Aber ich mache alles Schrittweise.
So nun hier habe ich den Script aus 3 Scripte zusammengeführt. Alle haben funktioniert aber zusammen nicht.

P.S- eine .val Datei kann ich nicht löschen darum diese Umbenennung ins .txt.
Nun sehe ich den Fehler nicht. Kann mir jemand helfen???

LG, Kristy

Content-Key: 92811

Url: https://administrator.de/contentid/92811

Printed on: April 19, 2024 at 17:04 o'clock

Member: bastla
bastla Jul 24, 2008 at 08:48:11 (UTC)
Goto Top
Hallo Butterblume!

P.S- eine .val Datei kann ich nicht löschen darum diese Umbenennung ins .txt.
Das hat wohl nichts mit dem Dateityp zu tun, sondern eher mit der Tatsache, dass Du "fin" (und auch "fout") noch nicht geschlossen hast, daher nach der Zeile 21:
fout.Close
fin.Close
Wenn Du Dir die Temp-Datei ersparen möchtest, könntest Du die gesamte Datei (mit .ReadAll und Split() am Zeilenende = vbCrLF) in ein Array einlesen, dieses durchlaufen, um die richtige Zeile zu finden, und in diese Zeile dann den neuen Wert schreiben. Am Ende müsstest Du mit Join() aus dem Array wieder einen zusammenhängenden Text machen und diesen mit .Write in die (inzwischen geschlossene und wieder zum Schreiben geöffnete) Eingabedatei schreiben.

Grüße
bastla
Member: Butterblume
Butterblume Jul 24, 2008 at 09:07:30 (UTC)
Goto Top
Das mit dem Schliessen habe ich inzwischen auch gemerkt und geändert. Jetzt funktioniert das.
Ja mein Script ist einbischen zu kompliziert, viel unnötiges Zeug da ich selber nicht weiss, wie das geht.
Und mit Array habe ich nicht so viel Kenntnis darum gehe ich nicht drauf ein.
Aber ich schaue mal, vielleicht versuche ich doch mit Array.

Danke bastla.

LG, Kristy