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. Scritch

Beiträge von Scritch

  • 2D-Array - Array in Array?

    • Scritch
    • 7. Oktober 2010 um 09:35

    Nein, tut es leider nicht. Es läuft zwar,
    aber irgendwie wird die Schleife nicht durchlaufen, bzw. nicht so,
    wie es soll. In die Log.txt wird auch nichts geschrieben.

    Wieso dürfen die nicht .ini's heißen? Die werden von einem
    Programm nunmal als .ini zurückgegeben - da kann ich nichts
    für ;)

  • Dateien mit bestimmten Endungen löschen

    • Scritch
    • 7. Oktober 2010 um 09:32

    Ok, wunderbar. Funktioniert. Danke :)
    Dann jetzt noch eine kleine Erweiterung: Bestimmte Dateien
    von dem zu löschenden Datentyp sollen nicht gelöscht werden.
    Z. B. Die File C:\Eigene Dateien\wichtig.pdf
    Nicht nur das: Es sollen auch vereinzelt ganze Verzeichnisse
    ausgelassen werden.

    So habe ich es mir vorgestellt.

    Spoiler anzeigen
    [autoit]

    #include "_GetFilesFolder_Rekursiv.au3"
    Local $aauslassen[1]
    $aauslassen[0] = "wichtig.345"
    $a345 = _GetFilesFolder_Rekursiv("C:\", "345", 0)
    For $a = 1 to UBound($aauslassen) - 1
    If ;Datei = [$a]Then gehe zu nächster datei
    If ;Ordner = "c:\sehr wichtige Dokumente" dann gehe zu nächstem Verzeichnis
    For $i = 1 To $a345[0]
    FileDelete($a345[$i])
    Next
    EndIf
    EndIf
    Next

    [/autoit]


    Aber mir fehlen irgendwie
    die Befehle. Die Liste der UDF's ist alles andere als
    komplett...

    Was anderes am Rande: Kann man mit AutoIT auch parallel
    Dinge laufen lassen. Also nicht 2 Scripte zugleich,
    sondern dass in einem Script z. B. 2 Schleifen gleichzeitig
    durchlaufen werden?

    Edit:
    Obs so funktionieret?

    Spoiler anzeigen
    [autoit]

    #include "_GetFilesFolder_Rekursiv.au3"
    ;Local $aauslassen[1]
    ;$aauslassen[0] = "wichtig.pdf"
    $a345 = _GetFilesFolder_Rekursiv("d:\", "345", 0)
    For $a = 1 to UBound($aauslassen) - 1
    For $i = 1 To $a345[0]
    If Not [$i] = "d:\nicht löschen\wichtig.pdf" Then
    If not [$i] = "d:\nicht löschen.345" Then
    FileDelete($a345[$i])
    EndIf
    EndIf
    Next
    Next

    [/autoit]
  • 2D-Array - Array in Array?

    • Scritch
    • 7. Oktober 2010 um 08:40

    Moin,

    prinzipiell ist es das Kleiner, aber funktionieren tuts leider nicht ;(
    Das Scripts beendet sich wieder in dem Augenblick, nachdem
    die Daten aus den .xls's ins Array eingelesen wurden.

    Was macht eig. die Schleife hier genau?

    Spoiler anzeigen
    [autoit]

    For $n = 1 To 2
    _ArraySearch($areferenz, $Files2d[$i][$n], 0, 0, 1, $n +1)

    [/autoit]
  • Dateien mit bestimmten Endungen löschen

    • Scritch
    • 6. Oktober 2010 um 12:50

    Nur einen bestimmten ordner mit allen unterordner durchsuchen geht auch.

  • Dateien mit bestimmten Endungen löschen

    • Scritch
    • 6. Oktober 2010 um 12:26

    Die Namen sind ja prinzipiell egal, da nur die Endung berücksichtigt werden soll.
    Naja, vll. ist das in AutoIT ja nicht anders möglich. Ich habe mich da nur an Batch
    orientiert, und da brauche ich wenn ich einen bestimmten Pfad habe auch nur angeben

    Code
    del c:\*.pdf


    und es werden hier dan alle PDF-Dokumente gelöscht.
    Aber ich brauche es halt nicht nur für einen Pfad, sondern für ein ganzes Laufwerk.

  • Dateien mit bestimmten Endungen löschen

    • Scritch
    • 6. Oktober 2010 um 12:17

    Ja, da bin ich gestern drauf gestoßen.
    Sagt wohl jeder, aber keine Angst, ich habe
    damit keinen unsinn vor ;)

    Wozu aber die Rekursive Datei/Ordner Auflistung per Objekt?

    Eig. hatte ich gehofft, dass das mit 3, oder 4 Zeilen abgespeist ist :whistling:

  • Dateien mit bestimmten Endungen löschen

    • Scritch
    • 6. Oktober 2010 um 12:06

    Was meinst du?
    Wenns fertig ist solls halt Dateien mit einer bestimmten Endung
    auf einem bestimmten Laufwerk löschen. Das oben war nur ein
    Beispiel.

  • Dateien mit bestimmten Endungen löschen

    • Scritch
    • 6. Oktober 2010 um 12:03

    Hey,
    ich möchte in einem Laufwerk, sagen wir C:\, alle Dateien mit der Endung .pdf löschen.
    Wie kann ich das mit batch oder AutoIT anstellen?

  • 2D-Array - Array in Array?

    • Scritch
    • 6. Oktober 2010 um 10:20

    So, habe die Dateien, die gebraucht werden, jetzt mal angehängt.
    In der ersten Spalte stehen die Daten aus dem "dienstname.ini"
    In der 2. Spalte die Daten aus "dienststarttyp.ini" in der 3. die
    Daten aus "dienststatus.ini".

    Sinn davon ist es halt, auf einem entfernten Rechner zu schauen, ob keine
    bösartigen Dienste laufen. Gedacht ist es so, dass Zeile für Zeile
    die Einträge aus $Files2d zuerst in $anegativliste gesucht werden.
    Ist der Eintrag dort vorhanden, wird mit der nächsten Zeile aus $Files2d
    weitergemacht. Wird die Zeile z. B. nicht in $anegativliste gefunden,
    wird $areferenz nach dieser gesucht. (Es muss die Zeile genau so vorkommen
    wie es in $Files2d steht, sonst wird die zu suchende Spalte in die log.txt geschrieben)

    1. Spalte 2. Spalte 3. Spalte

    Beispiel:
    Array $Files2d
    1. Zeile: AdminPW Auto Wahr

    Nach dieser Zeile wird jetzt in $anegativliste gesucht,
    ob sie da so drinnensteht.

    Spoiler anzeigen

    Warndienst Disabled FALSCH
    Indexdienst Disabled FALSCH
    Ablagemappe Disabled FALSCH
    (stark gekürzt)

    Steht die erste Zeile nicht in $anegativliste, wird in $areferenz weiter-
    gesucht.

    Spoiler anzeigen

    AdminPW Auto Wahr
    NVIDIA Display Driver Service Auto WAHR
    Microsoft Office Diagnostics Service Manual FALSCH
    Office Source Engine Manual FALSCH
    Plug & Play Auto WAHR
    IPSEC-Dienste Auto WAHR
    Geschützter Speicher Auto WAHR
    (stark gekürzt)


    So, hier ist der Dienst vorhanden. Also, jedes zu suchende
    Element der Zeile 1 aus $Files2d ist so in $areferenz vorhanden.
    Ist dies so, wird nichts weiter mit dieser Zeile gemacht und es wird die
    2. Zeile, alle 3 Elemente genommen.

    2. Zeile:Bösartiger Dienst Auto Wahr

    So wieder wird in $anegativliste gesucht -> Dienst nicht gefunden
    Dienst wird in $areferenz gesucht -> Dienst nicht gefunden.
    Da Dienst nicht gefunden wurde soll die Zeile 2 mit allen
    3 Elementen jetzt in die log.txt geschrieben werden.

    Die .ini's habe ich gekürzt der besseren Übersicht halber
    und des Datenschutzes.

    Dateien

    Neu.zip 12,86 kB – 314 Downloads
  • 2D-Array - Array in Array?

    • Scritch
    • 6. Oktober 2010 um 08:18

    Juten Morjen,

    gelöst habe ich das Problem immernoch nicht.

    Mithilfe von Kleiner bin ich zwar weitergekommen, aber
    noch nicht bei meinem Ziel angelangt.

    Spoiler anzeigen
    [autoit]

    Local $sOut = ''
    Local $Files2d[$File1[0]][3]


    For $n = 1 To UBound ($Files2d) -1
    _ArraySearch($anegativliste, $Files2d[$n][0], 1)
    If @error Then
    _ArraySearch($areferenz, $Files2d[$n][0], 1)
    If @error Then
    $sOut &= $Files2d[$n][0] & @CRLF
    EndIf
    EndIf
    Next

    Local $fh = FileOpen('log.txt', 1)
    FileWrite($fh, $sOut)
    FileClose($fh)

    [/autoit]


    Das ganze läuft zwar nicht mehr in einen Fehler,
    allerdings wird das Ergebnis auch nicht wie gewollt in
    die log.txt geschrieben.
    Die Arrays werden alle richtig eingelesen ($Files2d,
    $areferenz, $anegativliste)

    Ich weiß einfach nicht, wo der Fehler liegen könnte... :pinch:

  • Tastenbel. per AutoIT reg.

    • Scritch
    • 4. Oktober 2010 um 16:16

    Moin,

    ich weiß nicht inwieweit euch das bekannt ist, aber ich erzähle mal kurz:
    Da gibt es diese Firma, Eine Tochterfirma von Dell, Alienware nennt sie sich.
    Stellt Desktops und Notebooks her. Ich besitze von dieser ein Notebook.
    Bei den Notebooks ist es, dass man versch. Bereiche in versch. Farben leuchten
    lassen kann. Tastatur, AW-Logo, Powerbutton etc.

    Da das mitgeliefert Commandcenter nur mittelmäßig ist (So heißt das Programm,
    mit dem man die Beleuchtung steuert), dachte ich mir, ich könnte mir etwas indivi-
    duelles basteln.

    Hat da wer Erfahrung? Ich müsste dann ja irgendwie Zugriff auf den Controller, der
    das steuert, haben.

    Ich möchte halt gern eine Lösung mit AutoIT haben.

  • 2D-Array - Array in Array?

    • Scritch
    • 4. Oktober 2010 um 08:48

    Klingt logisch...

    Das von kleiner habe ich inzwischen auch verstanden.

    Aber bei meinem aktuellen Problem komme ich noch nicht weiter,
    auch wenn mir die Problematik jetzt bekannt ist. Irgendwie habe
    ich einen noch nicht gelösten Knoten im Hirn.

    $Files2d soll ja so viele Zeilen bekommen, wie $File1. Und 3 Spalten.
    Müßte es dann nicht auch so aussehen:

    [autoit]

    Local $Files2d[$File1[0]][3]

    [/autoit]


    ?

    Und wenn, wie soll ich das in meine Suchabfrage einbauen? :pinch:

  • 2D-Array - Array in Array?

    • Scritch
    • 1. Oktober 2010 um 14:41

    So, ich denke ich habe es verstanden. Muss noch ein wenig rumprobieren.
    Eines erschließt sich mir aber noch nicht völlig:

    [autoit]

    $2D_Array[$1D_Array[0]][0]; 5 zeile 1 Spalte weil $1D_Array[0] = 4

    [/autoit]


    Wieso 5 Zeile Spalte 1? Spalte 1 ist ja noch nachzuvollziehen, aber Zeile 5?

    Noch etwas anderes, aber zum selben Thema:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <File.au3>
    Dim $File1, $File2, $File3
    _FileReadToArray(@ScriptDir & "\eins.ini", $File1)
    _FileReadToArray(@ScriptDir & "\zwei.ini", $File2)
    _FileReadToArray(@ScriptDir & "\drei.ini", $File3)
    Dim $Files2d[$File1[0]][3]
    For $i = 1 To $File1[0]
    $Files2d[$i-1][0] = $File1[$i]
    $Files2d[$i-1][1] = $File2[$i]
    $Files2d[$i-1][2] = $File3[$i]
    Next
    _ArrayDisplay($Files2d)

    [/autoit]


    Ich möchte $aFile2d gerne weiterverwenden. Und zwar in einer
    Schleife. Diese Schleife soll ein anderes 2d-Array, ebenfals mit 3
    Elementen je Spalte, durchsuchen. Dafür muss ich aber ja noch
    die Variable deklarieren. Genügt da

    [autoit]

    Local $aFiles2d

    [/autoit]


    oder übersehe ich da etwas?

    So soll die Schleife aussehen:

    Spoiler anzeigen
    [autoit]

    Local $sOut = ''
    Local $aFiles2d

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

    For $n = 1 To UBound($aFiles2d) -1
    _ArraySearch($anegativliste, $aFiles2d[$n], 1)
    If @error Then
    _ArraySearch($areferenz, $aFiles2d[$n], 1)
    If @error Then
    $sOut &= $aFiles2d[$n] & @CRLF
    EndIf
    EndIf
    Next

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

    Local $fh = FileOpen('log.txt', 1)
    FileWrite($fh, $sOut)
    FileClose($fh)

    [/autoit]


    Theoretisch solls so funktionieren, das _ArraySearch auch für 2d-Arrays gedacht ist.
    Aber den gewünschten Effekt hats nicht. Nichtmal ne Fehlermeldung :whistling:

    Edit: Jetzt sagt er mir "array variable has incorrect number of subscripts or subscript dimension range exceeded"
    in Zeile 5.

  • 2D-Array - Array in Array?

    • Scritch
    • 1. Oktober 2010 um 12:00

    Okay, das muss ich erstmal sacken lassen...
    Habs auch gerade gesehen meinen Fehler, Andy.

  • 2D-Array - Array in Array?

    • Scritch
    • 1. Oktober 2010 um 11:20

    Das Tut "kenne" ich schon. Ich habe es mir angesehen, aber ehrlich gesagt nur teilweise verstanden.
    Das meiste was dort behandelt wird (z. B. Variable oder statische Arrays) werde ich nie brauchen.

    Genau, Schnitel, wie eine Exceltabelle. Das $i benutzen wir dann ja quasi nur deswegen,
    um die Schleife so oft durchlaufen zu lassen, wie die Datei einträge hat?

    Sonst hätte ich das auch in eine Whileschleife packen können, oder sehe ich das falsch?

    Noch zuguterletzt (hoffe ich):

    [autoit]

    Dim $Files2d[$File1[0]][3]

    [/autoit]

    Wozu hast du die Deklariert? Warum [0][3]?

  • 2D-Array - Array in Array?

    • Scritch
    • 1. Oktober 2010 um 11:03

    Achso, alles klar!
    Soweit jedenfals. Hatte ich nicht erwähnt aber ja, die Dateien haben
    gleich viele Zeilen. Wozu aber [0]? Das würde ich noch gerne wissen.

    Zuuterletzt jetzt noch die Schleife.

    [autoit]


    For $i = 1 To $File1[0]
    $Files2d[$i-1][0] = $File1[$i] ;Schreibt Dateien aus File1 in Spalte1
    $Files2d[$i-1][1] = $File2[$i] ;Schreibt Dateien aus File2 in Spalte2
    $Files2d[$i-1][2] = $File3[$i] ;Schreibt Dateien aus File3 in Spalte3
    Next

    [/autoit]

    Erkläre mir aber doch mal bitte, was genau

    [autoit]

    $Files2d[$i-1][0] = $File1[$i]

    [/autoit]

    macht :)
    Also, prinzipiell klar, aber im einzelnen noch nicht so.

  • 2D-Array - Array in Array?

    • Scritch
    • 1. Oktober 2010 um 10:38

    Auskennen wäre zuviel gesagt. Ich habe vor 10 Tagen das erste Mal wirklich ein Array benutzt ^^

    Edit: Also, ich habe mich bisher nur mit Arrays befasst, wo der Wert der in dem Array stehen soll,
    aus einer externen Datei stammte. Das war bisher das einzige. In der deutschen Help steht zu
    2d-Arrays auch nichts was zu gebrauchen ist.

  • 2D-Array - Array in Array?

    • Scritch
    • 1. Oktober 2010 um 10:30

    Das war das was mir klar war :D Bis Zeile 7 alles klar, danach nicht mehr so ;)

    Edit: okay, habe 9 - 1 verstanden was er macht, aber nicht warum er es macht.

    [autoit]


    $kleinste = $File1[0] ;Weist der $kleinste die File1 zu (Wozu aber [0]?)
    If $File2[0] < $kleinste Then $kleinste = $File2[0] ;Ist File2 kleiner als $kleinste, dann weise $kleinste File2 zu.
    If $File3[0] < $kleinste Then $kleinste = $File3[0] ;hier nochmal dasselbe...

    [/autoit]

    Ralle ich nicht...

  • 2D-Array - Array in Array?

    • Scritch
    • 1. Oktober 2010 um 10:24

    Habs gerade gesehen und auch ausprobiert. So solls sein, vielen Dank erstmal für eure Hilfe.

    Allerdings verstehe ich nocht nicht ganz, was da passiert.

    Bis Zeile 7 ist es mir ja klar, aber dann hörts auch schon auf ?(

    Was machst du z. B. mit

    [autoit]

    $kleinste = $File1[0]

    [/autoit]

    und warum die 0 in den eckigen Klammern?

  • 2D-Array - Array in Array?

    • Scritch
    • 1. Oktober 2010 um 10:12

    Problem ist, dass es in meiner .ini keine Sectionen gibt.
    Es steht alles so drin, wie es in einer normalen Textdatei steht.

    Wie sollte ich denn vorgehen, wenn ich die .ini wie eine normale
    .txt behandeln wollte?

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™