Datei mit Wert vergleichen

  • Hallo,

    ich will den Inhalt einer Datei mit einem Variablen Wert vergleichen.
    Also ich hab eine Datei in der über 100 Rechnernamen stehen.
    Es soll überprüft werden, ob der aktuelle Rechner schon in der Datei steht, wenn nicht sollte der Rechnername am Schluss angehängt werden.

    Hat hier jemand eine Idee oder Vorschlag ??

    danke

  • willst du fertige Lösung oder hilfe zur selbsthilfe??

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Hier mal ein Bsp.

    [autoit]


    #include <Array.au3>
    $NewPCName = "TestPC"
    $sFile = @ScriptDir & "\PC.txt"

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

    $File = FileRead($sFile)
    $File = StringSplit($File, "|")

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

    For $x = 1 To $File[0]
    If $File[$x] == $NewPCName Then $File = ""
    Next

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

    If IsArray($File) Then
    _ArrayAdd($File, $NewPCName)
    _ArrayDelete($File, 0)
    $File = _ArrayToString($File)
    FileWrite($sFile)
    EndIf

    [/autoit]
  • Und kürzer:

    Spoiler anzeigen
    [autoit]

    $NewPCName = "TestPC"
    $sFile = @ScriptDir & "\PC.txt"

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

    If Not StringInStr(FileRead($sFile),$NewPCName & @CRLF) Then
    FileWrite($sFile, $NewPCName & @CRLF)
    EndIf

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hallo,

    super vielen Dank für die Antworten, eine Erweiterung hätte ich noch.

    Die Datei sieht folgend aus

    C123456768, 11-05-2010 - 13:04:06
    C123456777, 11-05-2010 - 13:14:06

    Die Datei soll durchsucht werden, und wenn der Rechner gefunden wird, soll das Datum und die Zeit neu geschrieben werden.
    Andernfalls soll der Rechner mit Datum und Zeit angehängt werden.

    Hat hier jemand nochmals eine Idee

    danke

    • Offizieller Beitrag

    Oder eine fertige Lösung (ohne Icludes):

    Spoiler anzeigen
    [autoit]


    $sPCFile = @ScriptDir & '\PC.txt'
    $sFile = FileRead($sPCFile)
    $sDate = StringFormat('%s-%s-%s - %s:%s:%s', @MDAY, @MON, @YEAR, @HOUR, @MIN, @SEC)
    $sSearch = 'C123456777'
    If StringInStr($sFile, $sSearch) Then
    $sFile = StringRegExpReplace($sFile, '(' & $sSearch & '),.+', '$1, ' & $sDate)
    Else
    $sFile &= $sSearch & ', ' & $sDate & @CRLF
    EndIf
    $hFile = FileOpen($sPCFile, 2)
    If $hFile <> -1 Then
    FileWrite($hFile, $sFile)
    FileClose($hFile)
    EndIf
    MsgBox(0,0,$sFile)

    [/autoit]
  • Hallo vielen Dank,
    ich habe das Script momentan im Einsatz.
    Nur ersetzt er mir das Datum nicht
    Er findet den Rechner nur wird die $sDate Variable nicht neu geschrieben :(


    $sPCFile = @ScriptDir & '\PC.txt'
    $sFile = FileRead($sPCFile)
    $sDate = StringFormat('%s-%s-%s - %s:%s:%s', @MDAY, @MON, @YEAR, @HOUR, @MIN, @SEC)
    $sSearch = @Computername
    If StringInStr($sFile, $sSearch) Then
    $sFile = StringRegExpReplace($sFile, '(' & $sSearch & '),.+', '$1, ' & $sDate)
    Else
    $sFile &= $sSearch & ', ' & $sDate & @CRLF
    EndIf
    $hFile = FileOpen($sPCFile, 2)
    If $hFile <> -1 Then
    FileWrite($hFile, $sFile)
    FileClose($hFile)
    EndIf
    MsgBox(0,0,$sFile)

  • Hallo,

    hab eine ini Datei aus der ich Werte auslesen möchte, dann vergleichen und die Werte dann erweitern

    also in der Datei steht der Wert "4", den möchte ich suchen und dann erweitern "4";"bla";"bla2"

    Code
    #include <GUIConstants.au3>#include <file.au3>#include <Date.au3>#include <array.au3>#include <Process.au3>
    $sPCFile = @ScriptDir & "\pc.ini"$sFile = FileRead($sPCFile)$sSearch = "4"
    If StringInStr($sFile, $sSearch) Then$wert1 = "bla"	$sFile = StringRegExpReplace($sFile, '(' & $sSearch & '),.+', '$1, ' & $wert1)	writefile()EndIf
    If StringInStr($sFile, $sSearch) Then	$wert2 = "bla2"	$sFile = StringRegExpReplace($sFile, '(' & $sSearch & '),.+', '$1, ' & $wert2)	writefile()EndIf
    
    
    func writefile()$hFile = FileOpen($sPCFile, 2)If $hFile <> -1 ThenFileWrite($hFile, $sFile)  FileClose($hFile)EndIfEndFunc
    
    
    Exit

    nur macht er garnichts wo hab ich da meinen Fehler