1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. ahe

Beiträge von ahe

  • Programm automatisch installieren

    • ahe
    • 5. Juni 2009 um 17:12

    Ist doch mit AutoIt, nur anstelle von 50 Zeilen sind es gerade 'mal 3...

    Ich bevorzuge wenn immer es irgend geht die originalen Installationsparameter des Herstellers, erst wenn das Setup von ignoranten, keinem Standard gehorchenden Entwicklern erstellt wurde, dann fange ich an das Setup "abzufilmen..."

    (sorry, ich ärgere mich gerade über eine Java-Anwendung, die sich erst nach dem ersten Start konfigurieren läßt. Und außerdem über dieses Problem:[ offen ] Umzug des Vorlagenpfades in Worddateien)

    mfg
    Axel

  • Programm automatisch installieren

    • ahe
    • 5. Juni 2009 um 17:00

    Hallo Cr@sh,

    das habe ich hier: http://www.appdeploy.com/packages/detail.asp?id=1120 gefunden:

    Code
    Switches in the setup.exe for a silent/automated install
    
    
    /silent = nogui no requesters
    /noautorun = dont start it when windows start
    /noreboot = do no reboot
    /license=X:\<PATH>\Key.AnyDVD = path to regfile
    
    
    or
    
    
    /config=X:\<PATH>\silentAnyDVD.txt for config/silent install
    
    
    silentAnyDVD.txt
    ***********************************
    [LicenseAgreement]
    Agree = Yes|No
    
    
    [InstallPath]
    Path = "c:\Program Files\AnyDVD"
    
    
    [Regfile]
    RegPath = "x:\path\Key.AnyDVD"
    
    
    [Settings]
    Autorun = Yes|No
    Language = "EN"
    ***********************************
    Alles anzeigen

    Der Aufruf könnte dann so erfolgen (nicht getestet, nur so 'ne Idee):

    [autoit]


    FileInstall("c:\temp\anydvd_src\SetupAnyDVD6555.exe", $WorkDir, 1)
    RunWait($WorkDir & 'SetupAnyDVD6555.exe /silent /noautorun /noreboot /license=<DeinPfad>\Key.AnyDVD', $WorDir, @SW_HIDE)

    [/autoit]

    Alternativ könntest du ja auch eine Datei erstellen, dies mit einbinden und dann aufrufen:

    [autoit]


    FileInstall("c:\temp\anydvd_src\SetupAnyDVD6555.exe", $WorkDir, 1)
    FileInstall("c:\temp\anydvd_src\silentAnyDVD.txt", $WorkDir, 1)
    RunWait($WorkDir & 'SetupAnyDVD6555.exe /silent /noautorun /noreboot /config=<DeinPfad>\silentAnyDVD.txt', $WorDir, @SW_HIDE)

    [/autoit]

    Ach ja, hier http://www.windows-unattended.de/component/opti…ase/Itemid,467/ gibt es in der Schalterdatenbak unter dem Begriff "AnyDVD" auch noch etwas zu finden... :)

    mfg
    Axel

  • Überprüfung ob Dienst läuft

    • ahe
    • 5. Juni 2009 um 15:54

    Hallo,

    du könntest Abfragen, ob ein bestimmter Prozess/Task lauft und diesen dann ggfs. killen:

    [autoit]

    $PID = ProcessExists("DeinProzess.exe") ; Will return the PID or 0 if the process isn't found.
    If $PID Then ProcessClose($PID)

    [/autoit]

    Ansonsten gibt es noch die Möglichkeit pstools von http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx auszuprobieren oder mit den Befehlen (unter WinXP) tasklist und taskkill zu arbeiten...

    mfg
    Axel

  • Umzug des Vorlagenpfades in Worddateien

    • ahe
    • 5. Juni 2009 um 12:06

    Hallo Alina,
    da hast du mich wohl missverstanden, oder ich habe es etwas "ungeschickt" ausgedrückt, war 'halt spät... :)

    Ich habe einen Haufen Word-Dateien, die alle eine Formatvorlage eingetragen haben, die es entweder nicht mehr gibt, oder aber deren Pfas falsch ist (das passiert halt, wenn man keine Aliase sondern Servernamen im Pfad verwendet...:-|). Dies verlängert die Ladezeiten eines 90KB großen Dokuments (egal wo es liegt, ob lokal oder im Netz) auf ca. 30 Sekunden. (User-Gefühl: 10 Minuten ;) )

    Das angegebene VBA Skript ersetzt jetzt diesen Vorlagen-Pfad-Eintrag durch einen anderen bzw., wenn man keinen anderen eingibt, wird die normal.dot automatisch genommen.
    Da ich es ziemlich lästig finde erst Word zu starten und dann das Makro ausführen zu können, dachte ich man könnte es ja mit VBS oder AutoIt machen. Außerdem wäre ein rekursives Durchgehen von Verzeichnissen dann der nächste Schritt...

    Aus lauter Verzweiflung ;( habe ich jetzt erst einmal versucht überhaupt eine Info über eine Formatvorlage aus irgendeiner Word-Datei zu bekommen, z. B. die normal.dot (s. mein 2. Posting), das klappt allerdings nur in VBS, nicht jedoch in AutoIT ?(

    Nun stellt sich mir die Frage, ob es überhaupt möglich ist an diese Information zu kommen, ohne VBA zu nutzen... (s. a. die Funktion Dialogs() in VBA). Da ich mich mit den Objekten und deren Programmieren überhaupt nicht auskenne (bin nur ein einfacher Feld-Wald-und-Wiesen-Admin) stehe ich jetzt ziemlich ratlos da... 8|

    mfg
    Axel

  • Umzug des Vorlagenpfades in Worddateien

    • ahe
    • 4. Juni 2009 um 23:24

    Nun habe ich mich direkt mit ObjCreate versucht, jedoch mit "mäßigem" Erfolg...
    Wenn ich das folgende VB Skript ausführe, erhalte ich als Ergebnis "normal.dot", beim anschließenden AutoIt Skript wird jedoch nur eine leere MsgBox angezeigt. Was mache ich falsch?

    VBS: (allerdings bekomme ich mit dieser Methode nur die normal.dot angezeigt, nicht jedoch wenn ich eine auf dem Server einstelle:
    "\\ServerA\VORLAGEN\WORD\MeineVorlagen.dot")

    Code
    Set objWord = CreateObject("Word.Application")
    Set objDoc = objWord.Documents.Open("c:\temp\MeineWordDatei.doc")
    Set objTemplate = objDoc.AttachedTemplate
    WScript.Echo objTemplate 
    objWord.Quit


    AutoIT:

    [autoit]

    $objWord = ObjCreate("Word.Application")
    $objDoc = $objWord.Documents.Open ("D:\heimann\LDPackages\Word_Template_kill\01-08 Schukra.doc")
    $objTemplate = $objDoc.AttachedTemplate
    MsgBox(0,"template test", $objTemplate)
    $objDoc.Close
    $objWord.Quit

    [/autoit]

    Kann es sein, dass es nur möglich ist die Vorlagen zu verändern, wenn man VBA benutzt? (Bislang konnte ich auch keine VBS Lösung herausbekommen...)

    mfg
    Axel

  • Word in AutoIt beeinflussen!

    • ahe
    • 4. Juni 2009 um 15:25

    Vielleicht hilft dir ja die Funktion _WordAttach aus word.au3 etwas weiter...

    mfg
    Axel

  • Umzug des Vorlagenpfades in Worddateien

    • ahe
    • 4. Juni 2009 um 01:30

    Hallo,

    ich habe da ein kleines Problem und konnte bislang keine Lösung mit AutoIt erstellen.
    Wir verwendeten zentral abgespeicherte Vorlagen-Dateien in Word. Jetzt hat sich der Pfad auf einen allgemein standardisierten Pfad geändert und jetzt müssen diese Pfade angepasst werden. Bei Microsoft habe ich ein VBA-Skript gefunden
    http://web.archive.org/web/2005030406…t.com/kb/830561
    und nach etwas herumprobieren auch ans Laufen gebracht (s. u.). Allerdings schön ist etwas anderes...

    Code
    Sub Test()
       Dim strFilePath As String
       Dim strPath As String
       Dim intCounter As Integer
       Dim strFileName As String
       Dim OldServer As String
       Dim NewServer As String
       Dim objDoc As Document
       Dim objTemplate As Template
       Dim dlgTemplate As Dialog
    
    
       OldServer = "\\ServerA\VORLAGEN\WORD\MeineVorlagen.dot"
       NewServer = "\\ServerB\VORLAGEN\WORD\MeineVorlagen.dot"
    
       strFilePath = InputBox("What is the folder location that you want to use?")
       If Right(strFilePath, 1) <> "\" Then strFilePath = strFilePath & "\"
       strFileName = Dir(strFilePath & "*.doc")
      Do While strFileName <> ""
         Set objDoc = Documents.Open(strFilePath & strFileName)
         Set objTemplate = objDoc.AttachedTemplate
         Set dlgTemplate = Dialogs(wdDialogToolsTemplates)
         strPath = dlgTemplate.Template
         objDoc.AttachedTemplate = NewServer
         strFileName = Dir()
         objDoc.Save
         objDoc.Close
      Loop
       Set objDoc = Nothing
       Set objTemplate = Nothing
       Set dlgTemplate = Nothing
    End Sub
    Alles anzeigen

    Jetzt wollte ich das ganze aus Word-VBA herauslösen und mit AutoIt machen, damit ich es auch direkt auf dem Server starten kann. Außerdem um es etwas grafisch aufzupeppen...
    Dies scheint jedoch nicht so einfach zu sein, zum Einen werde ich vermutlich doch die COM-Objekte von Word benötigen, zum Anderen habe ich keine Ahnung, wie ich die Funktion Dialogs(wdDialogToolsTemplates) in AutoIT realisiere...
    Desweiteren konnte ich bislang nur den Namen der Vorlage auslesen, nicht jedoch den Pfad: "\\ServerA\VORLAGEN\WORD\MeineVorlagen.dot"...

    [autoit]

    #include <File.au3>
    #include <Word.au3>
    $oWordApp = _WordCreate (@ScriptDir & "\MeineWordDatei.doc")
    $oDoc = _WordDocGetCollection ($oWordApp, 0)
    MsgBox(0, "Template", _WordDocPropertyGet ($oDoc, "Template"))

    [/autoit]

    Ich habe daraufhin nach VBS Alternativen gesucht, leider haben diese bei mir nicht funktioniert und das Debuggen ist etwas knifflig, wenn man sich nicht auskennt...:
    http://forum.vb-paradise.de/programmieren/…lates-umziehen/
    http://www.edugeek.net/forums/scripts…e-location.html

    mfg
    Axel

  • Automatische Auswahl aus ComboBox in Installationsskript

    • ahe
    • 15. Mai 2009 um 09:26

    Hallo Oliver,

    wir arbeiten mit LANDesk. Leider ist das Setup eine NSIS-Installer EXE, keine MSI.
    Ich werde daher ein Paket mit AutoIt machen, dass die Dateien in ein Verzeichnis kopiert, die Registryeinträge macht und die Icons erstellt... so muss ich nicht das original Setup starten.

    mfg
    Axel

  • Automatische Auswahl aus ComboBox in Installationsskript

    • ahe
    • 14. Mai 2009 um 16:27

    Hallo,

    leider war die "Lösung" nur teilweise erfolgreich.

    Solange irgendjemand angemeldet ist, funktioniert die "Abarbeitung" des Dialogs.
    Wenn aber, wie bei Software Verteilungen von Desktop Management Systemen üblich, niemand angemeldet sein muss, da ein lokaler Dienst bzw. das Systemkonto die Installation durchführt, dann passiert nix. (was ja auch logisch ist, ein Dialog kann ja auch wg. der nicht laufenden Shell (explorer.exe) nicht angezeigt werden...)

    Jetzt bin ich etwas ratlos, wie ich einen nicht angezeigten Dialog durchgehen soll, ich vermute, ich muss eine Art Snapshot Paket erstellen und verteilen...

    mfg
    Axel

  • Automatische Auswahl aus ComboBox in Installationsskript

    • ahe
    • 13. Mai 2009 um 13:23

    Hallo Oliver,

    es scheint an SciTE zu liegen, habe immer "Go" gestartet, anstatt das Ganze 'mal zu compilieren... (wieder einmal wurde die eigene Faulheit bestraft :whistling: ...)

    Jetzt funktioniert es auch bei mir. Mit dem folgenden Skript sollte man dann auch nicht nach Pfaden, etc. gefragt werden, der Parameter /S (silent Parameter des NSIS-Installer) scheint die restliche Installation silent zu machen...

    [autoit]

    Run("D:\PrintScreen\PrintScreen44_Setup.exe /S")
    Sleep(2000)
    $hwnd = WinGetHandle("Installer Language", "Installer Language")
    ControlSend("Installer Language","", "ComboBox1", "ee")
    Send("{ENTER}")

    [/autoit]

    Ach ja, eine Anfrage beim Hersteller hat bislang nix gebracht...

    mfg
    Axel

  • Automatische Auswahl aus ComboBox in Installationsskript

    • ahe
    • 13. Mai 2009 um 12:04

    Danke Oliver,

    aber, mmh, ich habe es auch getestet, allerdings habe ich das Problem, dass sich der Wert erst dann ändert, wenn zuvor eine MsgBox geöffnet/geschlossen wurde (?)! Anscheinend stimmt da 'was mit dem Focus nicht...
    Kurios ist auch, dass man nicht "English" als String übergeben kann, sondern "ee", da ansonsten Espanol genommen wird, für Deutschland darf man nicht "Deutsch" nehmen, sondern "dd", ansonsten erhält man den Wert "Chinese (Simplified)" (bei einfachem "d" ist es "Dansk"...)

    [autoit]

    Run("D:\PrintScreen\PrintScreen44_Setup.exe")
    MsgBox(4096, "diedeldum", "dummdideldei")
    ControlSend("Installer Language","", "ComboBox1", "ee")

    [/autoit]

    mfg
    Axel

  • Automatische Auswahl aus ComboBox in Installationsskript

    • ahe
    • 13. Mai 2009 um 11:24

    Hallo,

    kann es sein, dass man nur einen Wert in einer ComboBox setzen kann, wenn man sie zuvor selbst erzeugt hat?

    Bislang war ich der Ansicht, dass ich die einzelnen Einträge einer ComboBox auslesen kann und den gewünschten Eintrag als "Default" setzen kann...
    So wie es aussieht scheint die Funktion ControlCommand etwas anders zu funktionieren, als ich dachte... ich komme immer im Skript in den Fehlerfall...

    [autoit]

    Run("D:\PrintScreen\PrintScreen44_Setup.exe")
    $occurence = ControlCommand("Installer Language","", "ComboBox1","FindString", 'Deutsch')
    if @error=1 Then
    MsgBox(4096, "Fehler", $occurence)
    Else
    MsgBox(4096,"Kein Fehler",$occurence)
    EndIf

    [/autoit]

    etwas Rat- und derzeit ziemlich Ideenlos (ich glaube ich brauche noch einen Liter Kaffee...)
    Axel

  • Automatische Auswahl aus ComboBox in Installationsskript

    • ahe
    • 12. Mai 2009 um 19:00

    Hallo,

    ich habe da ein Problem mit der Installation von Gadwin PrintScreen. Leider gibt es keine Installationsparameter, die den Aufruf einer ComboBox verhindern.
    In der ComboBox kann man die Installationssprache auswählen und anschließend muss dann der OK Button gedrückt werden.

    Ich habe es jetzt mit der Funktion ControlCommand versucht (s. code), allerdings scheine ich da etwas Grundlegendes falsch verstanden zu haben, es funktioniert nicht...
    Button1 ist der OK-Button...
    Anstelle von "ComboBox1" habe ich auch "[CLASS:ComboBox; INSTANCE:1]" ausprobiert, mit dem gleichen Effekt.

    [autoit]

    #include <GUIComboBox.au3>
    #include <GuiConstantsEx.au3>

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

    Global $occurence
    Global $mysetting

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

    RunWait("D:\heimann\LDPackages\PrintScreen\PrintScreen44_Setup.exe")
    WinActivate("Installer Language", "")

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

    $occurence = ControlCommand("Installer Language","", "ComboBox1","FindString", "English")
    $mysetting = ControlCommand("Installer Language","", "ComboBox1","SetCurrentSelection", $occurence)
    ControlEnable("Installer Language","","Button1")

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

    MsgBox(4096,"test", "Occurence: " &$occurence &@CRLF &"mysetting: " &$mysetting)

    [/autoit]

    AutoIt Window Info:

    Code
    >>>> Window <<<<
    Title:	Installer Language
    Class:	#32770
    Position:	653, 497
    Size:	294, 153
    Style:	0x94C808C4
    ExStyle:	0x00010101
    Handle:	0x001008E6
    
    
    >>>> Control <<<<
    Class:	ComboBox
    Instance:	1
    ClassnameNN:	ComboBox1
    Advanced (Class):	[CLASS:ComboBox; INSTANCE:1]
    ID:	1002
    Text:	
    Position:	68, 63
    Size:	210, 21
    ControlClick Coords:	40, 10
    Style:	0x50010203
    ExStyle:	0x00000004
    Handle:	0x001008EA
    
    
    >>>> Mouse <<<<
    Position:	764, 592
    Cursor ID:	2
    Color:	0xFFFFFF
    
    
    >>>> StatusBar <<<<
    
    
    >>>> Visible Text <<<<
    Deutsch
    OK
    Cancel
    Please select a language.
    
    
    
    
    >>>> Hidden Text <<<<
    Alles anzeigen


    mfg
    Axel

  • Anwendungspfad anhand der PID ermitteln

    • ahe
    • 17. April 2009 um 11:54

    Komisch,

    ich habe jetzt 'mal eine Message Box für die Ausgabe gemacht und das Skript compiliert (also nicht über SciTE aufgerufen).

    MsgBox(0, "Pfad", _GetPathByPID()) anstelle von ConsoleWrite(_GetPathByPID() & @CRLF)

    Wenn ich jetzt keine PID in _GetPathByPID angebe und die EXE über die Kommandozeile starte erhalte ich die folgende Meldung:
    \system32\cmd.exe

    Gebe ich im Skript eine PID ein, so erhalte ich für FireFox wieder den im vorigen Post angegebenen Pfad.

    Windows XP MUL (englisch + deutsches Sprachpaket)
    SciTE 1.77
    AutoIt v3 Script : 3, 3, 0, 0

    mfg
    Axel

  • Anwendungspfad anhand der PID ermitteln

    • ahe
    • 17. April 2009 um 11:25

    Hallo BugFix,

    habe eben leider einen kleinen Bug in deinem Skript gefunden...

    Wenn der Pfad z. B. für die Firefox.exe "C:\Program Files\Mozilla Firefox\firefox.exe" lautet, wird nur "Files\Mozilla Firefox\firefox.exe" zurückgeliefert...

    mfg
    Axel

  • Suchen eines Strings und Ersetzen der ganzen Zeile, dabei doppelte Einträge löschen

    • ahe
    • 8. April 2009 um 16:32

    Uuups, daran hatte ich gar nicht mehr gedacht... danke Dir...

    Die Tests sind bislang gut verlaufen, auch jetzt mit der letzten Änderung.

    @ojo: Dein Skript konnte ich bislang nicht testen, mache ich aber entweder heute Abend oder Morgen...

    mfg
    Axel

    Hallo ojo, das Skript funktioniert, allerdings bin ich bislang noch nicht so ganz durchgestiegen, danke noch einmal. Ich setze den Thread jetzt auf gelöst.

  • Suchen eines Strings und Ersetzen der ganzen Zeile, dabei doppelte Einträge löschen

    • ahe
    • 8. April 2009 um 15:09

    Hallo

    Ashpool: Es scheint zu funktionieren, muss aber noch ein paar weitere Tests machen und prüfen, ob nicht vielleicht ein paar andere Zeilen aus Versehen verschwinden...

    @ojo: Danke Dir, allerdings brauche ich da wohl etwas Zeit zum Durchsteigen... mit den Bugfix'schen Arrays wollte ich mich ohnehin 'mal beschäftigen...

    mfg
    Axel

  • Suchen eines Strings und Ersetzen der ganzen Zeile, dabei doppelte Einträge löschen

    • ahe
    • 8. April 2009 um 14:36

    Hallo Ashpool,

    ein kleines Problem noch. So wie es aussieht, werden die Einträge zwar ersetzt, allerdings werden nicht alle doppelten Einträge gelöscht.
    Ich vermute es liegt an der Anzahl der aufeinanderfolgenden gleichen Einträge.

    Code
    sapgw92  3392/tcp
    sapmsFC1	3123/tcp	# SAP System Messaging Service Port
    sapmsFC1	3345/udp	# SAP System Messaging Service Port
    sapmsFC1	3680/tcp	# SAP System Messaging Service Port
    sapgw93  3393/tcp
    sapgw94  3394/tcp
    sapgw95  3395/tcp
    sapmsFC1	3680/tcp	# SAP System Messaging Service Port
    sapgw96  3396/tcp
    sapgw97  3397/tcp
    sapgw98  3398/tcp
    sapgw99  3399/tcp
    sapmsP48  3600/tcp 
    sapmsFC1	3345/udp	# SAP System Messaging Service Port
    Alles anzeigen

    Ergebnis:

    Code
    sapgw92  3392/tcp
    sapmsFC1	3680/tcp	# SAP System Messaging Service Port
    sapmsFC1	3680/tcp	# SAP System Messaging Service Port
    sapgw93  3393/tcp
    sapgw94  3394/tcp
    sapgw95  3395/tcp
    sapgw96  3396/tcp
    sapgw97  3397/tcp
    sapgw98  3398/tcp
    sapgw99  3399/tcp
    sapmsP48  3600/tcp
    Alles anzeigen

    Erst bei einem weitren Lauf des Skripts verschwindet der letzte doppelte Eintrag...

    mfg
    Axel

  • Suchen eines Strings und Ersetzen der ganzen Zeile, dabei doppelte Einträge löschen

    • ahe
    • 8. April 2009 um 13:21

    Hallo Ashpool,

    vielen Dank für Deine Hilfe.

    Wenigstens war ich auf dem richtigen Weg, nur dann wollte ich es unnötig kompliziert machen :)

    Noch mal Danke
    Axel

  • Suchen eines Strings und Ersetzen der ganzen Zeile, dabei doppelte Einträge löschen

    • ahe
    • 8. April 2009 um 11:03

    Hallo,

    ich habe da ein kleines Problem. Ich muss eine Zeile in die Datei @SystemDir & "\drivers\etc\services" schreiben.
    Der Aufbau der Datei "services" ist: <service name> <port number>/<protocol> [aliases...] [#<comment>]
    Anhand des <service name> durchsuche ich die Datei und ersetze ggfs. einen vorhandenen Eintrag. Leider kann es vorkommen, dass der <service name> mehrfach eingetragen ist. Dies sollte zwar nicht sein, aber passiert, wenn man eine Software mehrfach installiert... Manchmal kommt es sogar vor, dass die Einträge der <port numbers/protocol> unterschiedlich sind, ein Kommentar vorhanden ist oder nicht...

    Derzeit kann ich zwar alle vorhandenen Einträge (basierend auf dem <service name>) finden und ersetzen, aber irgendwie funktioniert das Löschen der doppelten Einträge nicht.
    Im angehängten Skript habe ich die Lösch-Zeilen 'mal mit ";~" auskommentiert, vielleicht habt Ihr ja eine Idee dazu...
    (Der Einfachheit halber habe ich mir die services Datei ins Skriptverzeichnis kopiert, dann testet es sich besser... s. Skript)

    [autoit]

    ;*******************************************************************************************************************************
    #include <File.au3>

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

    $srcfile=@ScriptDir & "\services"
    $replaceString="sapmsFC1"&@TAB&"3680/tcp"&@TAB&"# SAP System Messaging Service Port"
    $searchString="sapmsFC1"

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

    Search_And_Replace ($srcfile, $searchString, $replaceString, 1)

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

    func Search_And_Replace ($s_file, $s_searchString, $s_replaceString, $b_DeleteDuplicates)
    ; $s_file = filename
    ; $s_searchString = string to search in file
    ; $s_replaceString = string to replace the searched string in file
    ; $b_DeleteDuplicates = flag, value 0=no or 1=yes, to deletes all duplicate lines of the search string or not,
    Dim $aLines [1000]
    Dim $stringCount

    $sfile=FileOpen($s_file, 0)

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

    for $i = 1 to _FileCountLines($s_file)
    $readline = FileReadLine($sfile, $i)
    if StringInStr($readline, $s_searchString, 2) Then
    $stringCount += 1
    $aLines [$stringCount] = $i
    ;MsgBox(0, "String found!", "The String " & $s_searchString & " is found in line: " & $i)
    _FileWriteToLine($s_file, $i, $s_replaceString, 1)
    EndIf
    Next

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

    ;~ Does not work, deletes only one of the wihshed lines and some other :-(...
    ;~
    ;~ if $b_DeleteDuplicates = 1 Then
    ;~ for $j=1 To $stringCount + 1
    ;~ MsgBox(0, "number", $stringCount)
    ;~ _FileWriteToLine($s_file, $aLines[$j], "", 1)
    ;~ Next
    ;~ EndIf

    ;MsgBox(0,"", $s_searchString & " entry does not exist!")
    FileClose($sfile)

    EndFunc
    ;*******************************************************************************************************************************

    [/autoit]

    Hier Suchen und Ersetzten habe ich zwar eine Suchen&Ersetzen gefunden, allerdings muss dafür dann die ganze Zeile identisch sein... Vielleicht ist es auch tatsächlich besser eine Tmp-Datei zu nutzen... ich bin für jeden Vorschlag offen...

    Beispiel-Auszug aus services Datei:

    Code
    sapgw92  3392/tcp
    sapmsFC1	3123/tcp	# SAP System Messaging Service Port
    sapgw93  3393/tcp
    sapgw94  3394/tcp
    sapgw95  3395/tcp
    sapmsFC1	3680/tcp	# SAP System Messaging Service Port
    sapgw96  3396/tcp
    sapgw97  3397/tcp
    sapgw98  3398/tcp
    sapgw99  3399/tcp
    sapmsP48  3600/tcp
    sapmsFC1	3345/udp	# SAP System Messaging Service Port
    Alles anzeigen

    mfg
    Axel

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™