Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 17

Thema: Zeile aus Txt-Datei auslesen & ändern

  1. #1
    nicht mehr wegzudenken Avatar von o0Julia0o
    Registriert seit
    28.08.12
    Beiträge
    269

    Daumen hoch Zeile aus Txt-Datei auslesen & ändern

    hallo

    ich möchte eine Zeile aus einer Textdatei auslesen & dann ändern(ohne Nachfragen oder Bestätigungen von Windows). Wie kann ich das machen?

    Code:
    find "serveralTextures:true" "C:\Dokument.txt">temp.txt
    Inhalt der Dokument.txt
    Code:
    farbe:true
    lachen:true
    gesicht:1.0
    serveralTextures:true
    hund:false
    Die Zeile: "serveralTextures:true" soll gefunden werden. Dann ist alles o.k.(goto Ende).
    Wenn sie allerdings so aussieht: "serveralTextures:false", dann soll sie geändert werden auf: "serveralTextures:true".

    oder kann man so etwas kompliziertes gar nicht mehr mti ner Batch-Datei hinbekommen?

    lieben Dank

    Julia
    Geändert von o0Julia0o (26.02.13 um 16:56 Uhr)

  2.   Anzeige

     
  3. #2
    SNF-Inventarnr. #9356663 Avatar von Razorblade
    Registriert seit
    14.06.03
    Ort
    Wien
    Beiträge
    2.305

    AW: Zeile aus Txt-Datei auslesen & ändern

    Möglich ist es, es ist nur die frage ob es sich auszahlt oder nicht besser gelöst wäre mit einem script in z.b. AutoHotkey.

    However, die Lösung zu deinem Problem lautet:
    Code:
    @echo off
    
    set target=serveralTextures
    set value=true
    set file=dokument.txt
    
    setlocal ENABLEDELAYEDEXPANSION
    for /f "tokens=1,2* delims=:" %%i in (%file%) do (
    	set nval=%%i:%%j
    	if "%%i"=="%target%" (
    		set nval=%%i:%value%
    	)
    	echo !nval!>>%file%.bak
    )
    del %file%
    ren %file%.bak %file%

  4. #3
    nicht mehr wegzudenken Avatar von o0Julia0o
    Registriert seit
    28.08.12
    Beiträge
    269

    AW: Zeile aus Txt-Datei auslesen & ändern

    das ist ja wunderbar ich blicke nur nicht durch , aber egal.. bis auf folgendes:

    Code:
    @echo off
    
    set target=serveralTextures
    set value=true
    set file=data\folder1\dokument.txt
    
    setlocal ENABLEDELAYEDEXPANSION
    for /f "tokens=1,2* delims=:" %%i in (%file%) do (
    	set nval=%%i:%%j
    	if "%%i"=="%target%" (
    		set nval=%%i:%value%
    	)
    	echo !nval!>>%file%.bak
    )
    del %file%
    ren %file%.bak %file%
    ...dann erstellt der eine dokument.bak(der Wert wird aber korrigiert). Also wenn ich die Zeile
    Code:
    set file=data\folder1\dokument.txt
    so ändere.

  5. #4
    SNF-Inventarnr. #9356663 Avatar von Razorblade
    Registriert seit
    14.06.03
    Ort
    Wien
    Beiträge
    2.305

    AW: Zeile aus Txt-Datei auslesen & ändern

    Das liegt daran, dass der ren-Befehl ganz zum schluss mit doppelten Pfaden nicht klarkommt.
    Ich hab den ren-Befehl durch move ersetzt, sollte jetzt auch mit einem Pfad statt nur einem Dateinamen funktionieren.

    Code:
    :: Ausgabe unterbinden
    @echo off
    
    :: Variablen setzen (file ist das Dokument)
    set target=serveralTextures
    set value=true
    set file=data\folder1\dokument.txt
    
    :: Befehlserweiterungen aktivieren damit in der for-schleife
    :: die Variable verarbeitet werden kann.
    setlocal ENABLEDELAYEDEXPANSION
    
    :: für jede zeile in der Datei %file% teile sie bei dem Zeichen : (Doppelpunkt)
    :: und weise den Teilen die Variablen %%i und %%j zu.
    for /f "tokens=1,2* delims=:" %%i in (%file%) do (
    	:: setze die den neuen string zusammen
    	set nval=%%i:%%j
    	:: wenn aber der Key (der erste teil der Zeile) der Variable %target% 
    	:: (dem gesuchten Key) entspricht dann...
    	if "%%i"=="%target%" (
    		:: ...setze die variable neu zusammen
    		set nval=%%i:%value%
    	)
    	:: schreibe den neuen String in eine neue Datei mit der zuätzlichen endung .bak
    	echo !nval!>>%file%.bak
    )
    :: lösche die originaldatei
    del %file%
    :: benenne die *.bak datei auf den originalnamen um.
    move %file%.bak %file%

  6. #5
    nicht mehr wegzudenken Avatar von o0Julia0o
    Registriert seit
    28.08.12
    Beiträge
    269

    AW: Zeile aus Txt-Datei auslesen & ändern

    hey supi, das funktioniert Ich mußte allerdings den code deiner 1. Version nehmen & dann unten die move-Stelle nutzen. Denn dein neuer code funktioniert so nicht. Keine Ahnung wo der Fehler liegt. Und danke für die Kommentare.. verstehe nun schon mehr. Steht das "1,2*" für jede Zeile?

    julia

  7. #6
    SNF-Inventarnr. #9356663 Avatar von Razorblade
    Registriert seit
    14.06.03
    Ort
    Wien
    Beiträge
    2.305

    AW: Zeile aus Txt-Datei auslesen & ändern

    o.O

    Weired, is derselbe code.
    Anyway. Freut mich dass es bei dir funtkioniert.

    Zitat Zitat von o0Julia0o Beitrag anzeigen
    Steht das "1,2*" für jede Zeile?
    Nein, das definiert die anzahl der Variablen und was in den Variablen stehen soll.
    "1" setzt den teil vor dem Doppelpunkt in die variable %%i und
    "2" setzt den teil nach dem Doppelpunkt in die Variable %%j.

    Das Asterisk (*) ist dabei wichtig, da es ja sein kann dass der Teil hinter dem Doppelpunkt nochmal einen Doppelpunkt erhält, und dann würden Teile flöten gehen.

    Sprich:
    "tokens=1,2" bei dem String "gesicht:1.0:Weiterer wichtiger Parameter" würde ausgeben:
    %%i => gesicht
    %%j => 1.0

    hingegen bei "tokens=1,2*" und demselben string kommt:
    %%i => gesicht
    %%j => 1.0:Weiterer wichtiger Parameter

  8. #7
    nicht mehr wegzudenken Avatar von o0Julia0o
    Registriert seit
    28.08.12
    Beiträge
    269

    AW: Zeile aus Txt-Datei auslesen & ändern

    aha, danke Dir Razor.

    Grüße nach Wien

    julia

  9. #8
    ditto

    AW: Zeile aus Txt-Datei auslesen & ändern

    Wunderprächtig, aber Batch ist sowas von tot, sobald es granular werden soll. Für solche Zwecke eignet sich am einfachsten zu erlernen AutoIt
    PHP-Code:
    $file1 FileOpen("test.txt"0)
    $file2 FileOpen("out.txt" 2)

    While 
    1
        $line 
    FileReadLine($file1)
        If @
    error = -1 Then ExitLoop

        $result 
    StringInStr($line"serveralTextures:false")

        If 
    $result 0 Then
          FileWriteLine 
    $file2$line )
        Else
          
    FileWriteLine $file2"serveralTextures:true" )
        EndIf      
    Wend

    FileClose
    ($file2)
    FileClose($file1)

    FileCopy "out.txt""test.txt")
    FileDelete  ("out.txt"
    Übersetzt:
    - Öffne Datei 1 und 2.

    Schleife:
    - Lese aus 1 bis Dateiende erreicht (Schleife verlassen)
    - Suche String ...
    - Und verfahre nach Anweisung.
    - Schreibe das Ergebnis in 2.
    Schleife wiederholen

    - Schliesse beide Dateien.
    - Kopiere 2 nach 1
    - Lösche 2

    Das ist nur die einfachste Variante, lässt sich beliebig erweitern, verfeinern, Fehler abfangen.

    Dazu benötigt Benutzer AutoIt als Entwicklungsumgebung. Portal - AutoIt.de - Das deutsche AutoIt-Forum
    Allerdings können die Scripte dann auch direkt ausgeführt werden, wahlweise auch als EXE-Datei kompiliert. Mit Parametereingabe und sonstigem Schnickschnack, welches mit Batch nur schwerlich oder gar nicht machbar wäre.

  10. #9
    nicht mehr wegzudenken Avatar von o0Julia0o
    Registriert seit
    28.08.12
    Beiträge
    269

    AW: Zeile aus Txt-Datei auslesen & ändern

    danke für den Hinweis.. und jetzt habe ich gerade mit Autohotkey angefangen wobei AutoIt noch interessanter aussieht. Meist reicht mir aber ohnehin ne Batch-Datei, wo ich mich zumal schon ein wenig auskenne.

  11. #10
    SNF-Inventarnr. #9356663 Avatar von Razorblade
    Registriert seit
    14.06.03
    Ort
    Wien
    Beiträge
    2.305

    AW: Zeile aus Txt-Datei auslesen & ändern

    ot:
    Zitat Zitat von ditto Beitrag anzeigen
    Wunderprächtig, aber Batch ist sowas von tot...
    Ich kenn zumindest n dutzend Administratoren die dir da wiedersprechen würden weil sie noch immer teilweise Batch für Rollouts verwenden...


    BTW: AutoIt is ja ganz nett, aber AutoHotkey mMn leichter zu lernen...
    Code:
    sfor := "serveralTextures"
    nval := "false"
    FileRead, content, % (dok := A_ScriptDir "\dokument.txt")
    FileDelete, %dok%
    rex := "i)" sfor ":(.+?)\R"
    FileAppend, % RegExReplace(content, rex, sfor ":" nval "`r`n"), %dok%

  12. #11
    ditto

    AW: Zeile aus Txt-Datei auslesen & ändern

    Das von dir angesprochene Programm (AutoHotkey) kenne ich nur dem Namen nach, aber dein Beispiel ist beeindruckt

    Batch zur Administration mag ich nicht verneinen, nutze ich selbst für mein Netzwerk. Nur käme ich nicht mehr auf die Idee, hochkomplexe Vorgänge in 16 Bit in der DosBox auszuführen. Selbst meine ersten Wege über c++ in der Box (gcc, mingw) waren zwar schnell, aber immer noch langsam. Auch die vorgefertigten Tools aus der GNU-Reihe waren langsam. Für andere Projekte nutze ich eine weitere modulare (Bibliotheken) Scriptsprache, die aber direkt auf c++ 32bit setzt. Für VC direkt habe ich nicht genügend Zeit, leider. MfG

  13. #12
    nicht mehr wegzudenken Avatar von o0Julia0o
    Registriert seit
    28.08.12
    Beiträge
    269

    AW: Zeile aus Txt-Datei auslesen & ändern

    was man so liest, ist AutoHotKey tatsächlich einfacher, aber AutoIt dafür halt komplexer. Und die gängigen Browser können dann den Code verstehen & umsetzen?
    Das wäre ja noch ein klitzekleiner Vorteil für Batches, die selbst ohen Browser laufen.

  14. #13
    SNF-Inventarnr. #9356663 Avatar von Razorblade
    Registriert seit
    14.06.03
    Ort
    Wien
    Beiträge
    2.305

    AW: Zeile aus Txt-Datei auslesen & ändern

    Was AutoHotkey angeht so ist mir keine Methode bekannt wie der Code direkt mit oder durch den Browser interagieren könnte.
    AFAIK brauchen sowohl AutoHotkey als auch AutoIT einen Interpreter solange der Code nicht kompiliert wird, was zumindest bei AutoHotkey nichts anderes heisst als dass der Code mit dem Interpreter gepackt und komprimiert wird.

  15. #14
    nicht mehr wegzudenken Avatar von o0Julia0o
    Registriert seit
    28.08.12
    Beiträge
    269

    AW: Zeile aus Txt-Datei auslesen & ändern

    aso, also ähnlich wie bei C++, das Ergebnis ist dann eine ausführbare exe. Aber jeder der kein AutoIT/AutoHotKey selbst installiert hat, kann die exe dennoch ausführen?

  16. #15
    SNF-Inventarnr. #9356663 Avatar von Razorblade
    Registriert seit
    14.06.03
    Ort
    Wien
    Beiträge
    2.305

    AW: Zeile aus Txt-Datei auslesen & ändern

    Exakt

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Batch | Einen bestimmten Teil einer txt ändern
    Von Palladin007 im Forum Programmierung & Webdesign
    Antworten: 1
    Letzter Beitrag: 25.09.11, 15:21
  2. Antworten: 8
    Letzter Beitrag: 16.07.08, 19:12
  3. Batch-File-Programmierung: Bestimmte Zeile/Spalte aus *.txt-Datei auslesen lassen
    Von Denominiator im Forum Programmierung & Webdesign
    Antworten: 4
    Letzter Beitrag: 02.07.08, 13:33
  4. suche eine TXT datei
    Von xerxes im Forum BPFTP-Server 2.x
    Antworten: 3
    Letzter Beitrag: 08.01.04, 16:39
  5. Text Datei auslesen mittels Batch Datei?
    Von QuHno im Forum Programmierung & Webdesign
    Antworten: 8
    Letzter Beitrag: 10.03.03, 14:37

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •