Itchy 10 Geschrieben 26. Oktober 2005 Melden Teilen Geschrieben 26. Oktober 2005 Hallo ! Hat jemand eine Idee wie man sowas angehen könnte? Itchy Zitieren Link zu diesem Kommentar
zahni 566 Geschrieben 26. Oktober 2005 Melden Teilen Geschrieben 26. Oktober 2005 Was willst Du genau machen ? -Zahni Zitieren Link zu diesem Kommentar
Itchy 10 Geschrieben 26. Oktober 2005 Autor Melden Teilen Geschrieben 26. Oktober 2005 Hallo Zahni ! Ich möchte eine Datei, nennen wir sie mal "test.ini" nach der Zeichenfolge xxxx durchsuchen, und diese duch die Zeichenfolge zzzz ersetzen. Itchy Zitieren Link zu diesem Kommentar
zahni 566 Geschrieben 26. Oktober 2005 Melden Teilen Geschrieben 26. Oktober 2005 Aha, willst also eine INI-Datei ändern, richtig ? Dazu gibt es in Windows eine API, die Du sehr einfach mit Kixtart nutzen kannst. Die Funktion heist WriteProfileString( ) http://www.kixtart.org/ -zahni Zitieren Link zu diesem Kommentar
Itchy 10 Geschrieben 26. Oktober 2005 Autor Melden Teilen Geschrieben 26. Oktober 2005 Zahni ! Eigentlich ist nicht so ganz das was ich brauche, ich mus das Script auf einer Bootdiskette unterbringen. Mit der Bootdisk wird der Rechner mit einem Share auf einem Server verbunden. Itchy Zitieren Link zu diesem Kommentar
zahni 566 Geschrieben 26. Oktober 2005 Melden Teilen Geschrieben 26. Oktober 2005 Manno, nun schreib' doch endlich mal ganz genau (!) was Du machen willst. Zahni, der seine Glaskugel putzt. Zitieren Link zu diesem Kommentar
maneich 10 Geschrieben 26. Oktober 2005 Melden Teilen Geschrieben 26. Oktober 2005 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 Zitieren Link zu diesem Kommentar
Itchy 10 Geschrieben 26. Oktober 2005 Autor Melden Teilen Geschrieben 26. Oktober 2005 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 Zitieren Link zu diesem Kommentar
zahni 566 Geschrieben 26. Oktober 2005 Melden Teilen Geschrieben 26. Oktober 2005 Schau mal hier: http://www.bootdisk.com/ da findest Du sicher was fertiges und passendes. -Zahni Zitieren Link zu diesem Kommentar
maneich 10 Geschrieben 26. Oktober 2005 Melden Teilen Geschrieben 26. Oktober 2005 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 Zitieren Link zu diesem Kommentar
zahni 566 Geschrieben 26. Oktober 2005 Melden Teilen Geschrieben 26. Oktober 2005 Da gibt es sogar DOS-Bootdisketten mit richtiger GUI (abfrage Computernamen usw.). -Zahni Zitieren Link zu diesem Kommentar
Itchy 10 Geschrieben 27. Oktober 2005 Autor Melden Teilen Geschrieben 27. Oktober 2005 @ maneich Ja genau es handelt sich um ein reines DOS Problem. Ich habe mir mal den Link angeschaut. Das Tool LMOD 1.2 scheint mir der richtige ansatz zu sein. Zitieren Link zu diesem Kommentar
zahni 566 Geschrieben 27. Oktober 2005 Melden Teilen Geschrieben 27. Oktober 2005 Für DOS eignet sich auch mtwin: http://www.neatech.ch/mtwin/ -Zahni Zitieren Link zu diesem Kommentar
maneich 10 Geschrieben 27. Oktober 2005 Melden Teilen Geschrieben 27. Oktober 2005 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 Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 28. Oktober 2005 Melden Teilen Geschrieben 28. Oktober 2005 Off-Topic:@maneichHallo Manfred,das ist ja super(Meister). :) GrußEdgar Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.