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

Beiträge von Moombas

  • Aufruf des Eventviewers funktioniert nicht mehr

    • Moombas
    • 17. Januar 2025 um 08:16
    Zitat von Peter S. Taler

    In bestimmten Situationen macht es auch Sinn Leerzeichen ganz aus einem String zu entfernen oder durch einen _ (Unterstrich) zu ersetzen.

    Ich würde eher sagen, das es ggf. Sinn macht, zu versuchen generell Leerzeichen (und Sonderzeichen, also incl Umlaute) in Pfad und Dateinamen zu vermeiden.
    Wobei dies wirklich fast nur bei Parameterübergabe kritisch ist, weil der PArameter halt im String die " erwartet wenn Leerzeichen vorhanden sind, daher meine oben angegebene Empfehlung.
    Gleiches gilt für Datenbanknamen etc. aber es lässt sich halt nicht immer vermeiden, weil (wie hier) der Pfad extern vorgegeben ist und tlw. auch vom System (/Program Files/).

    In fast allen anderen Strings sollte das ziemlich egal sein oder mir fallen jetzt gerade keine weiteren kritischen Beispiele ein :D

  • Aufruf des Eventviewers funktioniert nicht mehr

    • Moombas
    • 16. Januar 2025 um 08:16
    Zitat von hipfzwirgel

    Im Übrigen, der Code von Moombas mit dem Stringsplit funktioniert. Ich habe jedoch den Pfad zur XMl-Datei angepasst (sprich: die Datei nach C:\Daten kopiert) wegen des Freizeichens im Ordnername "Event Viewer". Das spart eine Menge Anführungszeichen und der Code für die Parameter muss nicht angepasst werden.

    Das Ding mit den Leerzeichen umgehst du ganz einfach, weshalb (ich persönlich) immer empfehle im Quellcode per default ' für Strings zu nutzen anstatt ".
    Warum das so ist erkläre ich dir gerne hier:

    Dein String mit dem du arbeiten willst enthält einen Pfad und/oder Dateinamen (wie in deiner Situation) mit Leerzeichen, muss also vom System her mit " eingefasst werden.

    AutoIt
    //1:1 String vom Pfad (als Beispiel): C:\dein Ordner\deine Datei.txt
    //1:1 String den das System erwartet: "C:\dein Ordner\deine Datei.txt"
    //In Autoit könnte man dies nun mit mehrfachen " lösen: 
    $String = """C:\dein Ordner\deine Datei.txt"""

    Das sieht aber (aus meiner Sicht) nicht nur unschön aus, sondern kann auch verwirren, gerade bei langen Strings (mit ggf vielen "). Auch muss man das dann immer im Blick haben, falls in einem String auch mal so " vorkommen.
    Original Text Beispiel: Ich bin ein "Test" Text.

    AutoIt
    //Würde man per default " nutzen ohne drüber nachzudenken das dort " drin sind, wäre das in Autoit so: 
    $String = "Ich bin ein "Test" Text." 
    //Und fällt damit sofort auf die Nase, weil hier richtig wäre es so zu machen: 
    $String = "Ich bin ein ""Test"" Text."

    Wenn ich dann diese beiden Beispiele nehme und ' Anwende, ist das besser zu lesen und vor Fehlern besser gefeit, sofern man nicht viele Strings nutzt, die wiederum ' enthalten (da würde man es dann genau andersherum machen):

    AutoIt
    //Beispiel 1: 
    $String = '"C:\dein Ordner\deine Datei.txt"'
    //Beispiel 2: 
    $String = 'Ich bin ein "Test" Text.'
    //Beispiel 3: 
    $String = "Ich bin ein 'Test' Text."
  • Windows 11, wieder keine Icon

    • Moombas
    • 13. Januar 2025 um 09:23
    Zitat von Peter S. Taler

    Managbarkeit?

    Ja, Windows z.B. per GPO's zu managen bzw. via Intune und EntraID etc. aber bei Android wird es halt immer mehr eingeschränkt.
    Je sicherer es für die normalen Endkunden gemacht wird (die ja ungemanagete Geräte haben) umso weniger können die Admins über EMM/MDM Systeme bei gemanageten Android Geräten machen, da das nur nebenbei bis garnicht betachtet wird (leider, denn da steckt noch sehr viel Potenzial drin).
    Chrome OS kannst du aktuell nur über verwaltete Nutzer einer verwalteten Chrome Domäne managen. Auch hier aus meiner Sicht verschenktes Potential, denn Chrome OS is sehr schnell und bei den heutigen (aus meiner Sicht: leider) viel verwendeten Web-(Cloud-)Anwendungen, macht das verwendete OS vom Kompatiblitätsfaktor kaum einen Unterschied.

  • Aufruf des Eventviewers funktioniert nicht mehr

    • Moombas
    • 13. Januar 2025 um 09:14

    Also zur Klärung:

    1 Ausrufezeichen: nur Imperativ
    <1 Satzzeichen (?!): Imperativ mit "Zorn-"komplex (à la: noch mit der Faust auf den Tisch hauen um dem ganzen Nachdruck zu verleihen. Da liebe ich den Satz von meinem Deutschlehrer damals: Satzzeichen sind keine Rudeltiere!)
    komplette Wörter in CAPS: gilt im web als schreien

  • Windows 11, wieder keine Icon

    • Moombas
    • 10. Januar 2025 um 08:13
    Zitat von chesstiger

    Davon ab: Ich bin privat mittlerweile bei einem Mischmasch aus macOS und Arch Linux hängengeblieben, macOS einfach wegen der phänomenalen Hardware. Ich administriere mit meinem MacBook Air aber dennoch ein komplettes Windows-Firmennetzwerk, und entwickle schwerpunktmäßig Software unter Linux. An den meisten Tagen habe ich also alles drei in der Hand. Und deshalb habe ich mittlerweile auch eine weniger ideologische Sicht auf die ganze Geschichte. Für mich ist das Betriebssystem mittlerweile einfach ein Werkzeug geworden. Wenn ich einen Nagel in die Wand schlagen will, nehm ich ja auch keinen Akkuschrauber. So nehme ich auch für die passende Aufgabe mittlerweile das passende OS. ^^

    Ich als wirklich jemand der die angeknabberten (!) Äpfel nicht so gerne mag, muss sagen, ja die Hardware war schon immer gut, was mich als "Ablehner" stört, ist das OS an sich.
    Was überhaupt nicht heißt das andere OS nicht auch so ihre negativen Seiten haben.
    MS bekleckert sich aktuell immer mehr und das nicht mit Ruhm und Android (Enterprise) oder Chrome OS haben auch ihre Tücken, gerade was managebarkeit angeht.
    Aber ich pers. würde, sofern Google mal aufhören würde die Managebarkeit immer weiter einzuschränken, in einigen Anwendungsfällen (Kiosk-Geräte, Mobile, Shared-Desktop) das als OS bevorzugen aber aktuell sieht der Trend dort nicht gut aus und mit AutoIt etc. wirst du da auch nix ;)

  • Hilfe benötigt bei der Automatisierung des Dateiumbenennungsskripts in AutoIt

    • Moombas
    • 10. Januar 2025 um 08:04

    Hmm,

    ich finde Kanashius Lösung zwar schön von der herangehensweise, jedoch wären dort aus meiner Sicht 2 Sachen nicht erfüllt:

    1. Die Reihenfolge der Dateinamensbestandteile (Log, backup,...) ändert sich, das lässt sich aber recht leicht im letzen Block neu anordnen.
    2. Eine Prüfung ob der neue Dateiname bereits existiert (und ggf. ergänzen durch fortlaufende Nummer, das wurde nicht weiter erläutert in der Anfrage was gemacht werden soll).
    Hierfür müsste eine weitere Schleife in den letzten Block eingefügt werden, die das entsprechend prüft und hoch zählt und den entsprechenden counter dann im Dateinamen einfügt.

  • Aufruf des Eventviewers funktioniert nicht mehr

    • Moombas
    • 8. Januar 2025 um 10:22

    naja eine ini braucht keine zus. Installationen und DB handling aber in dem von ihm genannten Beispiel würde ich das wohl auch eher in einer DB machen (welche man dann auch immer auswählt)...

  • Aufruf des Eventviewers funktioniert nicht mehr

    • Moombas
    • 8. Januar 2025 um 09:24
    Zitat

    Registry bei Deinstalation säubern - das gibt es doch... man muss nur einen Uninstaler benutzen ...

    Was habe ich da geschrieben!?

    Zitat

    Und ja, ich bin der Meinung ein per Installer installiertes Programm sollte einen Deinstaller mitbringen, der ALLE Dateien und Registry Einträge entfernt...

    Das findet aber bei einem in AutiIt selbst geschriebenen Programm wohl in den meisten Fällen keine Anwendung...

  • Aufruf des Eventviewers funktioniert nicht mehr

    • Moombas
    • 6. Januar 2025 um 14:32
    Zitat von Schnuffel

    Naja,

    ob eine Deinstallationsroutine eine ini-Datei löscht oder einen Registry Zweig ....

    Sind beides Einzeiler ;)

    Richtig aber eher löscht der user im "Notfall" den immer noch vorhandenen Programm Ordner, als in der Registry danach zu suchen.

    Ja, dann gibts noch die "moderne" Variante wo das alles dann in den Benutzer Ordnern gespeichert wird...aber lassen wir hier mal die Kirche im Dorf ;)

    Und ja, ich bin der Meinung ein per Installer installiertes Programm sollte einen Deinstaller mitbringen, der ALLE Dateien und Registry Einträge entfernt, die vom Programm/Installer angelegt wurden. Alles andere hat bitte die Finger von der Registry oder loakeln "versteckt" abgelegten Dateien zu lassen. Aber ich weiß: Das bleibt ein Traum

  • Aufruf des Eventviewers funktioniert nicht mehr

    • Moombas
    • 6. Januar 2025 um 10:53
    Zitat von Schnuffel

    mal kurz OffTopic,

    ich denke ini-Dateien haben ursprünglich den Zweck,
    dass man Parameter aus dem Programm auslagert, damit der Nutzer des Programms selbst gewisse Dinge beeinflussen kann.
    Für interne programatische Zwecke bietet sich meiner Ansicht nach eher die Registry an.

    Hängt aber immer vom Anwendungsfall ab.
    Pauschalisieren würde ich das Thema nicht.

    OffTopic Ende :)

    Ich stimme dem Grundsätzlich zu aber registry schreiben, würde auch bedeuten, sie aufzuräumen wenn es nciht mehr benötigt wird.

    Und das vergessen viele wodurch durch einige Programme mit der Zeit unnötiger Datenmüll in der Registry landet ohne entfernt zu werden nach der Deinstallation.

  • Aufruf des Eventviewers funktioniert nicht mehr

    • Moombas
    • 20. Dezember 2024 um 15:05

    Bedenke auch, das dein Array, so wie du es hier hast, 0-basiert ist, sprich in Zeile 9 (nehme ich deine Beispiel Zeilen aus dem Beitrag) ist nix mehr.
    Ich hoffe aber das du hier schlicht einen '.' als zus. Zeile vergessen hast.

    Ich selber verwende lieber _FileReadToArray($sPfad, $aArray)als Local $aArray = FileReadToArray($sPfad), da dort in Zeile 0 die Anzahl der Zeilen gleich abgelegt wird und somit auch ein 1-basiertes Array entsteht.

    Daher sähe mein Beispielcode auch eher so aus:

    AutoIt
    Opt('MustDeclareVars', 1)
    
    #include <File.au3>
    
    Global Const $sPfad = "E:\Arbeit\Autostart.txt"
    Global $aArray ;= FileReadToArray($sPfad)
    _FileReadToArray($sPfad, $aArray)
    
    
    For $Row = 1 to $aArray[0]
    	If Stringsplit($aArray[$Row], ',')[0] > 1 Then
    		ShellExecute(Stringsplit($aArray[$Row], ',')[1], Stringsplit($aArray[$Row], ',')[2])
    	Else
    		ShellExecute($aArray[$Row])
    	EndIf
    Next
    Alles anzeigen

    Und wenn ich ehrlich bin zweifel ich ein wenig daran das der Code so wie du es oben gepostet hast jemals so funktioniert hat für den Aufruf ShellExecute($aArray[9]) mit Parametern.

    Warum nutzt du nicht einfach Shortcuts im Autostart Ordner? dann brauchst du sowas nicht!?

    Und noch eine Empfehlung nebenbei: Ich würde eher eine INI Datei bei sowas nehmen à là:

    Code
    [Prog1]
    exe=
    parameter=
    [Prog2]
    exe=
    parameter=
    ...

    Das lässt sich dann schön sauber durch arbeiten mit iniread-Funktionen

  • Aufruf des Eventviewers funktioniert nicht mehr

    • Moombas
    • 20. Dezember 2024 um 14:42

    Ganz einfach, weil das eine Funktion ist und getrennt werden muss:

    AutoIt
    ShellExecute(Stringsplit($aArray[9], ',')[1], Stringsplit($aArray[9], ',')[2])

    Hoffe das passt soweit.

    Du musst dann aber das hinter dem , ändern in: /v:"C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml"

  • Fenster bewegen - olk.exe

    • Moombas
    • 18. Dezember 2024 um 10:03

    Ich kenne deine Outlook version nicht aber lese doch mit dem Tool "C:\Program Files (x86)\AutoIt3\Au3Info_x64.exe" deinen Classnamen für Outlook aus.

    Bei mir ist es z.B. "rctrl_renwnd32".

  • Ordner mit laufender Nummer

    • Moombas
    • 11. Dezember 2024 um 10:59

    Daher habe ich das ganze etwas eingeschränkt:

    Zitat von Moombas

    ...ohne Hintergründe zu kennen...

  • Ordner mit laufender Nummer

    • Moombas
    • 11. Dezember 2024 um 08:13
    Zitat von Racer

    Wenn sicher gestellt ist das in dem Zielordner keine anderen Verzeichnisse vorhanden sind, kann man mit _FileListToArray ($sBasisPfad, "*." ,2 ) die Anzahl der Ordner ermitteln und dadurch die nächste freie fortlaufende Nummer ermitteln.

    Bei ein paar hundert Verzeichnissen wird das egal sein, überhaupt wenn sie lokal liegen, aber wenn das mal auf einen Fileshare liegt von dem ich durch einen VPN-Tunnel auf die Firmendaten zugreiffe und dort liegen einige 10000 Ordner könnte das einen gewissen Geschwindigkeitsvorteil bringen...

    lg
    Racer

    Ich würde (aber das ist meine bescheidene Meinung ohne Hintergründe zu kennen), so oder so für jeden Kunden einen Unterordner erstellen und dort dann die Dateien ablegen. Dann ist es eine saubere Ordnung und minimiert die Anzahl der Dokumente enorm die in einem Ordner liegen.

  • Ordner mit laufender Nummer

    • Moombas
    • 9. Dezember 2024 um 11:25
    Zitat von Velted

    Moin Moombas,

    Wenn man das macht, wird die jeweils erste Datei mit 0 geschrieben. Ich glaube nicht, dass das sein soll.

    Hmm, ich weiß was du meinst, ist aber in seinem aktuellen Skript der Fall:

    AutoIt
    ;...
    Local $iNummer = 1
    
    ; Zähle bereits existierende Ordner
    Local $iNummer = 0
    ;...

    Davon bin ich ausgegangen aber du hast Recht, soll es mit 1 beginnen, nur Zeile 5 weg lassen

    Zitat von Velted

    "muss" ist falsch, weil "Lokale" Variable im "global scope" automatisch "Global" sind. Es schafft allerdings Klarheit.

    Ja, daher sage ich "muss", weil man sonst durchaus sich wundern könnte das es Nebeneffekte gibt, die bei gleichen Variablennamen (global/local) auftreten können oder eben etwas sonst nicht klappt.
    Daher lieber "muss" es ordentlich definieren anstatt "kann" und dann später alles Nacharbeiten etc. bei der Fehlersuche.

  • Ordner mit laufender Nummer

    • Moombas
    • 9. Dezember 2024 um 10:09

    Zunächst einmal machst du auch eine doppelte Erstellung einer Variable (Zeile 5 und 8). Zeile in Zeile 5 auf 0 setzen, Zeile 8 weg lassen.
    Dann bedenke bitte, wenn dies dein komplettes Skript ist, das "Local" hier die falsche Wahl ist, sondern "Global" genutzt werden muss, da alle Variablen außerhalb einer Funktion "Global" sind.

    Dann ist der Hinweis von @Musashi Gold richtig (da einfach umzusetzen).

    Dann noch das Format der Nummer, wenn du führende Nullen willst, damit die Sortierung nachher auch passt, verwende StringFormat("%05s", $iNummer), wobei die 5 hier die Anzahl der Stellen angibt.

    Ich würde zudem empfehlen eine Fehlerprüfung einzubauen für das Ordner erstellen. Wenn du dafür Hilfe brauchst wie man das machen kann, gerne einfach fragen.

    Die Frage, die ich mir noch Stelle, soll das immer nur 1mal durchlaufen und sich danach beenden oder willst du das so lange durchlaufen lassen bis der Benutzer auf "Cancel" drückt oder keine Eingabe macht (oder ein anderer Indikator zutrifft)?

  • Wiederholung eines Scripts

    • Moombas
    • 6. Dezember 2024 um 15:21

    Kanashius falscher Thread?

  • Webbrowser steuern für Downloads

    • Moombas
    • 27. November 2024 um 12:43

    Stimmt, den gabs ja auch noch ;)

  • Webbrowser steuern für Downloads

    • Moombas
    • 27. November 2024 um 11:19

    Schau mal hier, kurze Google Suche: https://autoitscript.com/wiki/WebDriver…started_example

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™