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

Beiträge von dmo

  • Anfängerfrage: Bin ich auf dem richtigen Weg?

    • dmo
    • 12. Januar 2016 um 21:09
    Zitat von Kanashius

    Du kannst aber auch hier weiter schreiben, wenn es passt.

    Danke. Dann hier also mal der aktuelle Status des Script. Hinweise und Tipps zum Code sind mir sehr willkommen.

    AutoIt
    #include <Array.au3>
    #include <File.au3>
    #include <MsgBoxConstants.au3>
    #include <Date.au3>
    ; #include <StringConstants.au3>
    
    
    ; Variablen
    Global $sTypeRaw
    Global $sTypeJpg = 'jpg'; Dateiendung Jpg-Format
    Global $sLogFile; Datei mit Liste der gelöschten Bilddateien.
    Global $sQuellOrdner; Ordner mit Bildateien
    Local $sLetztesZeichen
    Local $iReturnSicherheitsabfrage
    
    
    
    
    ; Abfrage Raw-Dateiendungen.
    $sTypeRaw = InputBox('RAW-Dateien', 'Zu berücksichtigende Raw-Dateiendungen' & @CRLF & @CRLF & 'Exakte Eingabe erforderlich', '*.arw;*.rw2;*.raf')
    
    
    ; Pfad Quellordner abfragen
    ; $sQuellOrdner = InputBox ('Quellordner','Bitte vollständigen Pfad zum gewünschten Bilderordner angeben.')
    
    
    ; Quellordner auswählen über Dateiauswahlbox auswählen.
    $sQuellOrdner = FileSelectFolder('Bitte den Bilderordner auswählen.', '', 2)
    If @error Then
    	MsgBox(0, '', 'Kein Ordner ausgewählt.')
    EndIf
    
    
    ; Prüfen, ob der Pfad mit \ endet. Wenn nicht, dies ergänzen.
    $sLetztesZeichen = StringRight($sQuellOrdner, 1)
    If $sLetztesZeichen <> '\' Then
    	$sQuellOrdner = $sQuellOrdner & '\'
    EndIf
    
    
    
    
    ;~ ; Prüfe, ob Quellordner vorhanden ist.
    ;~ If Not FileExists($sQuellOrdner) Then
    ;~ 	MsgBox (0,'Debug','Quellordner nicht gefunden.')
    ;~ 	Exit
    ;~ EndIf
    
    
    ; Sicherheitsabfrage anzeigen.
    $iReturnSicherheitsabfrage = MsgBox(49, 'Löschen?', 'Soll das Löschen gestartet werden?')
    If $iReturnSicherheitsabfrage <> 1 Then Exit
    
    
    
    
    ; Log-Datei (s.u.)
    ; Alte Log-Datei in den Papierkorb verschieben, wenn vorhanden.
    $sLogFile = $sQuellOrdner & "Geloescht.log"
    If FileExists($sLogFile) Then FileRecycle($sLogFile)
    
    
    
    
    ; Funktion zum Löschen der verwaisten Raw-Dateien aufrufen
    _deleteFilesWithoutJpg($sQuellOrdner, $sTypeRaw, $sTypeJpg)
    
    
    ; Funktion erstellen
    ; Raw-Dateien ohne zugehörige Jpg-Dateien werden identifiziert und gelöscht.
    Func _deleteFilesWithoutJpg($Folder, $typeR, $typeJ)
    	; Arrays deklariere.
    	Local $sDatei
    	Local $aListeRawDateien
    	Local $aTeileDateiname
    	Local $iIndexDateiendung
    	Local $sDateiEndungRaw
    	Local $iDateiVorhandenJpg
    	Local $sDateinameOhneEndung
    	Local $iZaehler = 0
    	Local $hLogFile
    
    
    	; Raw-Dateien in Array einlesen.
    	; Es werden nur Dateien, keine Ordner eingelesen.
    	; Unterordner werden nicht berücksichtigt.
    	$aListeRawDateien = _FileListToArrayRec($Folder, $typeR, 1)
    
    
    	; Prüfe, ob das Array erstellt wurde.
    	If @error = 1 Then
    		MsgBox(0, 'Debug', 'Fehler im Array.' & @CRLF & 'Fehlercode: ' & @extended)
    		Exit
    	EndIf
    
    
    	; Nacheinander Dateinamen im Array auslesen.
    	For $i = 1 To UBound($aListeRawDateien) - 1
    		$sDatei = $aListeRawDateien[$i]
    
    
    		; Dateinamen splitten, um Dateiendung extrahieren zu können und zwar unabhänging von der Anzahl der Zeichen der Endung
    		; und unabhängig davon, ob im Dateinamen mehrere Punkte enthalten sind.
    		$aTeileDateiname = StringSplit($sDatei, '.') ; Es wird ein Array ausgegeben.
    
    
    		; Das letzte Element im Array ist die Dateiendung.
    		; Die Anzahl der Elemente des Arrays kann variieren, wenn Dateinamen mehrere Punkte enthalten.
    		; Zum Extrahieren der Endung wird deshalb der Index des letzten Elementes benötigt.
    		$iIndexDateiendung = UBound($aTeileDateiname, 1) - 1
    
    
    		; Die Dateiendung aus dem Array lesen.
    		$sDateiEndungRaw = $aTeileDateiname[$iIndexDateiendung]
    
    
    		; Vollständiger Dateiname, aber ohne Dateiendung. Auch, wenn im Namen mehrere Punkte enthalten sind.
    		$sDateinameOhneEndung = StringTrimRight($sDatei, 1 + StringLen($sDateiEndungRaw))
    
    
    		; Prüfen, ob im Ordner eine gleichnamige Datei mit der Endung jpg. vorhanden ist.
    		$iDateiVorhandenJpg = FileExists($Folder & $sDateinameOhneEndung & '.' & $typeJ) ; Rückgabewert = 0, wenn Datei nicht existiert.
    
    
    		; Raw-Datei in den Papierkorb löschen, falls keine jpg-Datei vorhanden ist.
    		If $iDateiVorhandenJpg = 0 Then
    			FileRecycle($Folder & $sDateinameOhneEndung & '.' & $sDateiEndungRaw); FileDelete löscht die Datei endgültig.
    
    
    			; Gelöschte Dateien zählen.
    			$iZaehler = $iZaehler + 1
    
    
    			; Log-Datei schreiben.
    			$hLogFile = FileOpen($sLogFile, 1)
    			_FileWriteLog($hLogFile, $sDateinameOhneEndung & '.' & $sDateiEndungRaw) ; Write to the logfile passing the filehandle returned by FileOpen.
    			FileClose($hLogFile) ; Close the filehandle to release the file.
    		EndIf
    	Next
    	; Ausgabe Info Anzahl der gelöschten Dateien
    	MsgBox(48, 'Info', 'Es wurden ' & $iZaehler & ' Dateien gelöscht.')
    
    
    EndFunc   ;==>_deleteFilesWithoutJpg
    
    
    
    
    
    
    #cs
    	ToDo
    	====
    	Option, die Dateien nicht zu löschen, sondern in einen Unterordner zu verschieben.
    	Option, endgültig Löschen oder in den Papierkorb verschieben.
    	Vorschau der zu löschenden Dateien.
    	Letzten Quellordner für den nächsten Programmaufruf merken.
    	GUI
    	Verschiedene Jpg-Dateiendungen berücksichtigen.
    	Unterordner einbeziehen.
    #ce
    Alles anzeigen
  • Anfängerfrage: Bin ich auf dem richtigen Weg?

    • dmo
    • 11. Januar 2016 um 21:21
    Zitat von BugFix

    Ja, das war ein Schreibfehler.

    Da bin ich ja beruhigt. Danke für die Info.

    Ich habe meinem Script jetzt (zum Üben) noch um ein paar Optionen erweitert. Über weitere Tipps und Hinweise freundlicher Fachleute dazu würde ich mich freuen. Ich finde, dass das eine gute Art zu lernen ist. Ist hier dafür der richtige Platz oder sollte ich lieber im Unterforum "Skripte" ein neues Thema dafür aufmachen? Oder lieber gar nicht??

    Grüße

  • Anfängerfrage: Bin ich auf dem richtigen Weg?

    • dmo
    • 8. Januar 2016 um 14:11

    Hallo,

    also das Script von BufFix läuft bei mir so nicht erfolgreich. Es werden keine raw-Dateien gelöscht. Ich durchschau es ehrlich gesagt auch nicht richtig. Es ist sehr kompakt, was ja eigentlich sehr schön ist - aber die verschiedenen Stringmanipulationen habe ich nicht voll verstanden. Ist für mich wohl noch zu kompakt. Macht nichts. Die andere Variante funktioniert ja und ich kann damit gut weiterarbeiten.

    Vielen Dank nochmal.

  • Anfängerfrage: Bin ich auf dem richtigen Weg?

    • dmo
    • 7. Januar 2016 um 12:51

    Hallo,

    hier mal mein Version des Vorschlags von Kanashius. Ich will die Ideen ja nicht einfach per Copy and Paste verwenden, sondern ordentlich verstehen. Deshalb habe ich Elemente von Kanashius genommen und in mein Script eingefügt und das eine oder andere noch ergänzt/geändert.

    Demnächst ist dann der Vorschlag von BugFix "dran".

    Grüße

    AutoIt
    #include <Array.au3>
    #include <File.au3>
    #include <MsgBoxConstants.au3>
    
    
    ; Variablen
    $QuellOrdner = @DesktopDir & "\JgpRawTest\" ; Ordner mit den Bilddateien
    $typeRaw = "raw" ; Dateiendung Raw-Format
    $typeJpg = "jpg" ; Dateiendung Jpg-Format
    
    
    ; Funktion aufrufen
    _deleteFilesWithoutJpg ($QuellOrdner, $typeRaw, $typeJpg)
    
    
    
    
    ; Funktion erstellen
    Func _deleteFilesWithoutJpg ($Folder, $typeR, $typeJ)
    
    
    
    
    	; Alle Raw-Dateien in Array einlesen. Es werden nur Dateien, keine Ordner eingelesen.
    	$aFileList = _FileListToArray($Folder, "*." & $typeR, 1)
    
    
    		; Nacheinander Dateinamen im Array auslesen.
    		For $i = 1 To UBound($aFileList)-1
    			$Datei = $aFileList[$i]
    			; Dateierweiterung entfernen. Verwendung von StringLen ermöglicht Unabhängigkeit von Anzahl der Zeichen der Dateiendung.
    			$DateinameOhneErw = StringTrimRight ( $Datei, 1+StringLen ($typeR) )
    			; MsgBox(0,"Debug 01",$DateinameOhneErw)
    
    
    			; Prüfen, ob eine gleichnamige Datei mit der Endung jpg. vorhanden ist.
    			$DateiVorhandenJpg = FileExists ($Folder & $DateinameOhneErw & "." & $typeJ)
    
    
    			; Raw-Datei löschen, falls keine jpg-Datei vorhanden ist.
    			If $DateiVorhandenJpg = 0 Then FileDelete ($Folder & $DateinameOhneErw & "." & $typeR)
    		Next
    EndFunc
    Alles anzeigen
  • Anfängerfrage: Bin ich auf dem richtigen Weg?

    • dmo
    • 6. Januar 2016 um 18:30

    Vielen Dank für eure Rückmeldungen.
    Ich werde mir eure Ideen in Ruhe durchsehen und versuchen, sie nachzuvollziehen. Wenn ich weitere Fragen haben, melde ich mich wieder.
    Das kann ein bisschen dauern - ich habe nicht täglich Zeit, das Vorhaben zu verfolgen. Aber das stört ja nicht.

    Frage am Rande: Das Highlighten der Syntax in meinem Eintrag war nicht korrekt. Was könnte ich falsch gemacht haben?

    Grüße

  • Anfängerfrage: Bin ich auf dem richtigen Weg?

    • dmo
    • 6. Januar 2016 um 16:31

    Hallo,

    ich bin ziemlicher AutoIt- und Programmieranfänger. Bisher habe ich AutoIt vor allem für automatisierte Installationsscripte verwendet. Und auch das ist schon eine Weile her. Nun möchte ich mir ein kleines Programm schreiben, dass mich bei der Verwaltung von Bilddateien unterstützt. Gegeben ist ein Ordner mit jpg- und raw-Dateien. Diese haben den gleichen Namen, unterscheiden sich aber durch die Dateiendung. (So kommt das aus meiner Kamera.) In meinem Fotoworkflow durchforste ich die jpg-Dateien und lösche die, die ich nicht gebrauchen kann. In dem Ordner befinden sich dann aber noch die zugehörigen raw-Dateien. Das Programm soll diese "verwaisten" -raw-Dateien finden und löschen.

    Dies ist erstmal die Grundidee. Ich habe den unten aufgeführten Ansatz gewählt und möchte hier einfach einmal nachfragen, ob dieses Vorgehen Sinn macht oder ob ich das Ganze auch ganz anders angehen könnte oder sollte. Für Tipps wäre ich dankbar. Das "Programm" soll noch ausgebaut werden. So möchte ich z.B. mehrere Raw-Dateiformate berücksichtigen können (verschiedene Dateiendungen) oder auch verschiedene Quellordner. Am Ende hätte ich auch gern ein GUI. Bis dahin ist es für mich sicher noch ein weiter Weg und ich habe noch keine Idee, wie das gehen kann. Für mich ist dieses kleine Projekt eine Art Gehirntraining und ich versuche es einfach aus Spaß und Interesse an der Sache. Deshalb greife ich auch nicht auf Programme zurück, die ich im Netz gefunden habe und genau das tun, was ich möchte.

    Also - ich freue mich über HInweise und hier mein erster Ansatz

    AutoIt
    #include <Array.au3>
    #include <File.au3>
    #include <MsgBoxConstants.au3>
    
    
    $QuellOrdner = @DesktopDir & "\JgpRawTest\"
    
    
    ; Alle Raw-Dateien in Array einlesen.
    $aFileList = _FileListToArray($QuellOrdner, "*.raw", 1)
    
    
    ; Nacheinander Dateinamen im Array auslesen.
    For $i = 1 To UBound($aFileList)-1
    	$Datei = $aFileList[$i]
    	; Dateierweiterung (raw) entfernen.
    	$DateinameOhneErw = StringTrimRight ( $Datei, 4 )
    	; MsgBox(1,"Info1",$DateinameOhneErw)
    
    
    	; Prüfen, ob eine gleichnamige Datei mit der Endung jpg. vorhanden ist.
    	$DateiVorhandenJpg = FileExists ($QuellOrdner & $DateinameOhneErw & ".jpg")
        ; MsgBox(1,"Info2",$DateiVorhanden)
    
    
    	; Raw-Datei löschen, falls keine jpg-Datei vorhanden ist.
    	If $DateiVorhandenJpg = 0 Then FileDelete ($QuellOrdner & $DateinameOhneErw & ".raw")
    Next
    Alles anzeigen
  • Scite Version 3.4.1, Backup

    • dmo
    • 15. Mai 2014 um 14:00

    Hallo,

    ich habe über SciteConfig das Erstellen von BAK-Dateien aktiviert, indem ich angegeben habe, 5 BAK-Dateien behalten zu wollen. Leider macht Scite das aber nur, wenn ich die Dateien lokal speichere. Arbeite ich mit Dateien von einer USB-Platte, werden keine Backups angelegt. Weiß jemand zufällig woran das liegen könnte?

    Grüße

  • Gui - Button mit Hotkey bedienen

    • dmo
    • 16. November 2011 um 17:46

    Danke!

  • Gui - Button mit Hotkey bedienen

    • dmo
    • 16. November 2011 um 17:33

    Hallo,
    Anfängerfrage.

    Wenn ich mit Koda ein GUI erstelle und darin einen Button, dann kann ich ja einen Hotkey zuweisen. Aber wie bekomme ich es hin, dass ich z.B. eine OK-Schaltfläche mit ALT+o bzw. eine Abbrechen-Schaltfläche mit ALT-a bedienen kann? Diese Auswahl ist im Objektinspektor nicht möglich. Man kennt das ja aus den verschiedensten Programmen, dass die Bedienung über ALT+irgendwas möglich ist und die betreffenden Buchstaben dann zusätzlich unterstrichen angezeigt werden.

    Oder geht das gar nicht?

    Grüße

  • IP und weitere Daten auslesen

    • dmo
    • 22. Mai 2011 um 18:15

    Hallo,

    ich würde gern die aktuelle IP, Subnetzmaske, DNS 1 und 2 und Gateway zu einem bekannten Netzwerkadapter (z.B. LAN-Verbindung) in einer MsgBox anzeigen lassen (Windows 7 und Windows XP).

    Ich habe im Forum nach Lösungen gesucht, aber nur viel umfangreichere gefunden, die ich nicht durchschaue. Das würde ich aber gern - will ja schließlich etwas lernen dabei.

    Vielleicht hat jemand eine Idee und kann auch zwei drei Sätze zum Vorgehen schreiben. Wäre nett.

    Grüße

  • Windows Messagebox abfragen

    • dmo
    • 13. Mai 2011 um 15:44
    Zitat von name22

    Du kannst auch überprüfen was nach dem wegklicken der MsgBox passiert. Das ist vielleicht einfacher...

    Vielen Dank! Du hast mir einen guten Denkanstoß gegeben und einen möglichen Weg aufgezeigt. Ich habe das nun mit einer if-Abfrage in Zusammenhang mit WinExists gelöst. Wobei sich das WinExists auf das nächste Fenster der Installation bezieht, dass entweder erscheint oder eben nicht.

    Die ANYGUI.au3 schau ich mir dann auch mal in Ruhe an. Ein erster Blick hat mich erstmal überfordert.

    Grüße

  • Windows Messagebox abfragen

    • dmo
    • 13. Mai 2011 um 13:01

    Hallo,

    ich weiß zwar, wie ich eine von AutoIT selbst erstellte Msgbox abfragen kann (also welcher Button geklickt wird), frage mich aber, ob ich solches auch für von Windows oder einem Windowsprogramm generierte Boxen machen kann.

    Es geht konkret darum, dass bei einer automatisierten Installation eine Fenster erscheint, das nachfragt, ob über eine vorhandene Installation neu installiert werden soll oder nicht. Z.B. soll, wenn der User jetzt auf "Nein" klickt, das Script beendet werden ansonsten fortgeführt. Kann ich Abfragen, auf welche Schaltfläche der User klickt?

    Als Workaround habe ich bisher eine eigene Msgbox erstellen lassen und die Abfrage mit dieser realisiert. Das ist ja aber eigentlich etwas unschön.

  • Elemente im Optionenfenster in Word 2010 identifizieren

    • dmo
    • 16. März 2011 um 16:02

    Hallo zusammen,

    bin noch Anfänger im Umgang mit AutoIT, Habe bisher, zum Kennenlernen des Programms, einige kleine automatisierte Installationen programmiert, nachdem ich mir Tutorials zu Gemüte geführt habe. Jetzt würde ich gern in einem installierten Word 2010 einige Optionen ändern (nur zur Übung). Dazu habe ich eine grundlegende Frage.

    Das Word-Optionen-Fenster hat auf der linken Seite eine Liste verschiedener Einträge (siehe Anlage). Diese lassen sich nicht mit einer ALT+x-Tastenkombination ansprechen. Mit Hilfe von AutoIT-Window-Info erhalte ich keine Info darüber, ob diese einzelnen Einträge eigene IDs haben. Haben sie scheinbar nicht. Überhaupt kann ich mit Window-Info nur das gesamte Fenster auswählen, nicht aber einzelne Teile, wie z.B. die Schaltfläche OK.

    Übersehe ich da irgendetwas oder liegt es daran, dass diese Dialogbox vielleicht nicht standardkompatibel ist? Bleibt mir da nur das Arbeiten mit dem Senden von Pfeiltasten-Events u.ä.?

    Grüße

    Dateien

    wopt.jpg 35,7 kB – 0 Downloads

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™