Inhalte der ini-Dateien ersetzten ?

  • Hallo Leute,

    wie kann ich in allen ini-Dateien die unter c:\admin_V8\config\project_config\ liegen folgendes SR_PRJ = G:/ durch SR_PRJ = C:/ ersetzen.

    Besten Dank im Voraus !

    Viele Grüße,
    Dino

    Einmal editiert, zuletzt von Dino (24. Oktober 2008 um 15:44)

  • Alle ini-Dateien mit _FileListToArray lesen
    und dann entweder mit IniWrite oder mit StringReplace in jeder Datei ändern :)

  • Hi,
    einfach alles Antworten zusammensetzen :D

    [autoit]

    #include <File.au3>
    $pfad = "c:\admin_V8\config\project_config\"
    $array = _FileListToArray($pfad, "*.ini*", 1)

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To UBound($array) - 1
    IniWrite($pfad & "\" & $array[$i], "noch ausfuellen", "SR_PRJ", "C:/")
    Next

    [/autoit]

    Bei IniWrite mußt du noch die Sektion ändern. (sieht so in etwa aus: [SektionsName]).
    So geht es nur, wenn die Sektion immer gleich heisst.
    Probiers mal habs aber nicht getestet :sleeping:

  • Hallo,

    icha habe es wie folgt ausprobiert und nichts wird ersetzt :huh:

    [autoit]

    #include <File.au3>
    $pfad = "c:\admin_V8\config\project_config\"
    $array = _FileListToArray($pfad, "*.ini*", 1)
    $G = 'G:/'

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To UBound($array) - 1
    IniWrite($pfad & "\" & $array[$i], $G, "SR_PRJ", "C:/")
    Next

    [/autoit]

    Gruß,
    Dino

  • nein der aufbau einer Ini ist wie folgt:

    [Section]
    Key=Value
    Key=Value
    Key=Value
    Key=Value
    [Section]
    Key=Value
    Key=Value
    Key=Value

    und so weiter... d.h. eine section ist ein bereich wo sich keys bzw. values befinden... wenn du den section namen nicht weisst und auch nicht wissen willst benutze die funktion StringReplace
    Wenn du ihn wissen willst: (is jetzt grade in meinem kopf entstanden also keine garantie das es geht!)

    Spoiler anzeigen
    [autoit]

    Func inigetsection($file, $key, $value = 0)
    $section = IniReadSectionNames($file)
    Dim $output[1][2]
    For $i = 1 To Ubound($section)-1

    [/autoit] [autoit][/autoit] [autoit]

    $read = IniRead($file, $section[$i], $key, "DEFAULTVALUE")
    if $value <> 0 AND $read = $value Then
    Redim $output[Ubound($output)+1][2]
    $output[$i-1][0] = $section[$i]
    $output[$i-1][1] = $read
    ElseIf $value = 0 AND $read <> "DEFAULTVALUE" Then
    Redim $output[Ubound($output)+1][2]
    $output[$i-1][0] = $section[$i]
    $output[$i-1][1] = $read
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next
    Return $output
    EndFunc

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Hallo,

    meine ini-Datei sieht so aus:

    [autoit]

    #----------------------------------------------------------------------
    #
    # untitled.ini - Copy this file as a starting point for new projects.
    #
    #
    _USTN_PROJECTDESCR = Untitled Project

    [/autoit][autoit][/autoit][autoit]

    #----------------------------------------------------------------------
    # Set search paths.
    #----------------------------------------------------------------------
    SR_PRJ = g:/schulung/60008047/

    [/autoit][autoit][/autoit][autoit]

    CADTRON_USER_ENV = $(MS_DEF)
    CADTRON_LST = $(MS_DEF)Listen/
    CADTRON_LSTFT = $(MS_DEF)Listen/
    CADTRON_HIDDEN3D = $(MS_DEF)Schnitte/
    CADTRON_METHODE = $(MS_DEF)Methoden/
    CADTRON_IDATCALC_DIR = D:/Programme/Spricalc/IDAT-CALC
    #CADTRON_BUILDING = stockwerke_geb_1

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    MS_SEEDFILES > $(CADTRON)/env/dgn/seed/
    MS_DESIGNSEED = $(CADTRON)/env/dgn/seed/3D_m_mm_1000_100.dgn
    #MS_SEEDFILES = $(MS_DEF)einstellungen/seed/
    MS_SEEDFILES > $(_USTN_WORKSPACEROOT)system/seed/
    MS_SEEDFILES > $(_USTN_WORKSPACEROOT)standards/seed/
    MS_SYMBRSRC > $(MS_DEF)einstellungen/font/*.rsc
    MS_BACKUP = $(MS_DEF)Backup/

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    MS_RFDIR = $(MS_DEF)
    MS_RFDIR > $(MS_DEF)Schnitte/model_hatch/
    MS_RFDIR > $(MS_DEF)Schnitte/model_hidden/
    MS_RFDIR > $(MS_DEF)architektur/
    MS_RFDIR > $(MS_DEF)elektro/
    MS_RFDIR > $(MS_DEF)heizung/
    MS_RFDIR > $(MS_DEF)lueftung/
    MS_RFDIR > $(MS_DEF)sanitaer/
    MS_RFDIR > $(MS_DEF)planausgabe/
    MS_RFDIR > $(MS_DEF)sprinkler/

    [/autoit]
  • ohh gott das ja mal völlig beschissen, mach es so: ^^

    Spoiler anzeigen
    [autoit]

    $searchstring = "TEST"
    $replacestring = "TEST2"
    $handle = FileOpen($file, 1)
    $content = FileRead($handle)
    StringReplace($content, $searchstring, $replacestring)
    FileClose($handle)

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Spoiler anzeigen
    [autoit]

    $searchstring = "TEST"
    $replacestring = "TEST2"
    $pfad = "c:\admin_V8\config\project_config\"
    $array = _FileListToArray($pfad, "*.ini*", 1) ;leider weiss ich jetzt nicht genau was filelisttoarray alles zurückgibt ich glaube nur den dateinamen
    For $i = 1 To Ubound($array)-1 ;$i = 1 / 0 keine ahnung ob im index 0 schon was steht
    $handle = FileOpen($pfad&$array[$i], 1)
    $content = FileRead($handle)
    StringReplace($content, $searchstring, $replacestring)
    FileClose($handle)
    Next

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • ERROR: _FileListToArray(): undefined function.
    $array = _FileListToArray($pfad, "*.ini*", 1)

    [autoit]

    $searchstring = "G:/"
    $replacestring = "C:/"
    $pfad = "c:\admin_V8\config\project_config\"
    $array = _FileListToArray($pfad, "*.ini*", 1) ;leider weiss ich jetzt nicht genau was filelisttoarray alles zurückgibt ich glaube nur den dateinamen
    For $i = 1 To Ubound($array)-1 ;$i = 1 / 0 keine ahnung ob im index 0 schon was steht
    $handle = FileOpen($pfad&$array[$i], 1)
    $content = FileRead($handle)
    StringReplace($content, $searchstring, $replacestring)
    FileClose($handle)
    Next

    [/autoit]
  • so wird nichts ersetzt:

    [autoit]

    #include <File.au3>

    [/autoit][autoit][/autoit][autoit]

    $searchstring = "G:/"
    $replacestring = "C:/"
    $pfad = "c:\admin_V8\config\project_config\"
    $array = _FileListToArray($pfad, "*.ini*", 1) ;leider weiss ich jetzt nicht genau was filelisttoarray alles zurückgibt ich glaube nur den dateinamen
    For $i = 1 To Ubound($array)-1 ;$i = 1 / 0 keine ahnung ob im index 0 schon was steht
    $handle = FileOpen($pfad&$array[$i], 1)
    $content = FileRead($handle)
    StringReplace($content, $searchstring, $replacestring)
    FileClose($handle)
    Next

    [/autoit]
  • Genau, nur den Dateinamen. Aber deine Suchmaske versteh ich nicht :) *.ini*
    Das müsste reichen: *.ini

  • Ähhm, ja :) Du musst auch das ergebnis von stringreplace in die Datei speichern...

    [autoit]

    $content = FileRead($pfad&$array[$i]) ; lesen
    $content = StringReplace($content, $searchstring, $replacestring) ; ersetzen
    $handle = FileOpen($pfad&$array[$i], 2) ; Datei zum überschreiben öffnen
    FileWrite($handle,$content) ; neuen Inhalt schreiben
    FileClose($handle) ; Datei schließen

    [/autoit]