Jump to content

Zeichenfolge per Script in einer Datei ersetzen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

zunächst einmal kannst Du in einer bestehenden Datei nicht so einfach mal eine Zeile oder ein Wort oder Zeichen ersetzen.

 

Du mußt diese Datei am besten Zeile für Zeile in eine temporäre Datei übertragen und dies wenn du die Zeilennummer kennst, bis zur Zeile vorher, dann die Änderungen in der Zeile vornehmen und dann diese geänderte Zeile und danach den Rest übertragen. Dateien schließen, temporäre Datei in die Ursprungsdatei übertragen - hier überscheiben zulassen - und temporäre Datei löschen. Das ist der normle Vorgang.

 

Du beginnst mit

 

x1 = "Zeichenfolge"

x2 = len(x1)

set fso = CreateObject("Scripting.FileSystemObject")

set f1 = fso.OpenTextFile("Adress und Name Deiner Datei+.ext", 1)

set f2 = fso.OpenTestFile("%temp%\tmp.txt", 2, vbTrue)

' 1. Möglichkeit Zeilennummer ist bekannt

For i = 1 To [Zeilennummer - 1]

f2.WriteLine f1.Readline

Next

dat = f1.ReadLine

x = InStr(dat, x1)

dat1 = left(dat, x-1) & x1 & mid(dat, x+x2+1)

f2.WriteLine dat1

do

f2.WriteLine f1.Readline

Loop Until f1.AtEndOfStream

f1.Close

f2.Close

fso.CopyFile "%temp%\tmp.txt", "Adress und Name Deiner Datei+.ext", 2

 

' 2. Möglichkeit

do

dat = f1.ReadLine

x = InStr(dat, x1)

If 0 < x Then

dat1 = left(dat, x-1) & x1 & mid(dat, x+x2+1)

f2.WriteLine f1.Readline

Exit Do

End If

Loop Until f1.AtEndOfStream

do

f2.WriteLine f1.Readline

Loop Until f1.AtEndOfStream

f1.Close

f2.Close

fso.CopyFile "%temp%\tmp.txt", "Adress und Name Deiner Datei+.ext", 2

 

So in etwas ist das alles. Muß natürlich noch an Deine Gegebenheiten angepaßt werden.

 

MfG maneich

Link zu diesem Kommentar

Ok ich versuch mal genauer zu werden.

 

Ich hab eine DOS Bootdisk, und auf dieser Disk befindet sich im Verzeichnis A:\net die Datei system.ini Diese datei enthält unteranderem dei Zeile "Computername=test123".

 

So, nun möchte ich in dei autoexec.bat ein script einarbeiten, durch das die Zeile "Computername=Test123" in "Computername=ganzanders" geändert wird.

 

 

Itchy

Link zu diesem Kommentar

Hallo,

 

es ist immer vorteilhaft, wenn so viel als möglich an Informationen geliefert wird, dann bekommst Du auch viel bessere Ergebnisse/Vorschläge.

 

Du willst das also im reinen DOS realisieren?

 

Da hilft auch kein VBScript, evtl. Pearl aber damit kenne ich mich nicht aus. Das geht aber auch sehr gut mit einer Batch zusammen mit dem FreewareTool LMOd12 von http://home.mnet-online.de/horst.muc/german.htm.

 

Bevor ich hier aber wieder groß den Ablauf aufbaue, melde Dich erst nochmal und sage bescheid, ob ich damit richtig liege.

 

@Zani

ich glaube kaum, daß er unter dieser URL für sein Vorhaben etwas fertiges oder passendes findet.

 

MfG maneich

Link zu diesem Kommentar

Hallo,

 

teste mal dieses Script. Für den Test mal die 3 letzten Zeilen deaktivieren mit

":: " ohne Hochkomma - Leerstelle nach ::

 

----------------------------------------------

@echo off

cls

set x1=Computername=Test123

set x2=Computername=ganzanders

set ~t1=%temp%\tmp

echo XP,;P_,EP0Ex0Ez0Em3Em-ZBP(Eiu![j@_YQ2M@53#@CI~.8'uxCISZ[sC5.bM!C>%~t1%.com

type A:\net\System.ini|find /v /N "#">%~t1%.txt

%~t1%.com "set %%1=">%~t1%.bat

type %~t1%.txt|find /i "%x1%">>%~t1%.bat

call %~t1%.bat a

%~t1%.com "set %%1=">%~t1%.bat

echo %a%|lmod [2,2]>>%~t1%.bat

call %~t1%.bat x3

%~t1%.com "set %%1=">%~t1%.bat

echo ; | choice /s /c:;%x3%;>>%~t1%.bat

call %~t1%.bat a1

for %%e in (%a1%) do if not %%e==] goto abs0

%~t1%.com "set %%1=">%~t1%.bat

echo %a%|lmod [2,1]>>%~t1%.bat

call %~t1%.bat x3

:abs0

set _=

if not %x3%==1 goto abs01

echo %x2%>>%~t1%1.txt

goto abs1

:abs01

type %~t1%.txt|lmod /L%y% [4]>>%~t1%1.txt

:abs1

set _=%_%x

choice /n /c:%_%ÿ /t:ÿ,01

for %%e in (1 2 3 4 5 6 7 8 9) do if errorlevel %%e set y=%%e

type %~t1%.txt|lmod /L%y% []|find "%y%">nul

if errorlevel 1 goto end

if not %y%==%x3% goto abs11

echo %x2%>>%~t1%1.txt

goto:abs1

:abs11

type %~t1%.txt|lmod /L%y% [4]>>%~t1%1.txt

if not %y%==9 goto abs1

:abs2

set _=%_%x

choice /n /c:%_%ÿ /t:ÿ,01

for %%e in (10 11 12 13 14 15 16 17 18 19 20 ) do if errorlevel %%e set y=%%e

type %~t1%.txt|lmod /L%y% []|find "%y%">nul

if errorlevel 1 goto end

if not %y%==%x3% goto abs21

echo %x2%>>%~t1%1.txt

goto:abs2

:abs21

type %~t1%.txt|lmod /L%y% [5]>>%~t1%1.txt

if not %y%==9 goto abs2

:end

copy %~t1%1.txt A:\net\System.ini>nul

for %%e in (%~t1%.??? %~t1%1.txt) do del %%e>nul

cls

-------------------------------------------

 

In der Zeile for %%e in (10.....20) kannst Du auf jeden Fall bis 50 erhöhen, wenn Du mehr als 20 Zeilen in der System.ini hast.

 

Wenn Du in der System.ini dieses Zeichen "#" hast - was ich nicht glaube - mußt Du für diese Zeile

 

type A:\net\System.ini|find /v /N "#">%~t1%.txt

 

ein Zeichen finden, das in der System.ini nicht vorkommt und an der entsprechenden Stelle ändern.

 

Bei mir ist es mit einer Datei mit 20 Zeilen komplett und fehlerfrei durchgelaufen

 

MfG maneich

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...