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

Beiträge von Seppuku

  • MachMichVoll (MP3 zu Stick kopieren bis er voll ist)

    • Seppuku
    • 31. Oktober 2025 um 16:45

    Vielen Dank für Ihre Einschätzung.

    Und Sie treffen bei mir völlig ins Schwarze: Ich habe tatsächlich Probleme mit der Übersichtlichkeit. Gerade bei Schleifen. Viel zu oft erwische ich mich selbst dabei, daß ich z.B. immer wieder dieselben Variablen benutze und irgendwann selbst nicht mehr weiß was da gerade vor sich geht. Da hilft mir diese For-In-Schleife wirklich weiter!

    Auch vielen Dank für die Erklärungen für FileOpen/Close und @error. Obwohl ich mir Letzteres in einer ruhigen Minute nochmal zu Gemüte führen muss. Da habe ich wieder viel zu kurz gedacht.

  • MachMichVoll (MP3 zu Stick kopieren bis er voll ist)

    • Seppuku
    • 31. Oktober 2025 um 13:36

    Ich bin mir jetzt nicht ganz sicher, ob das hier der richtige Platz dafür ist. Falls nicht, bitte verschieben.

    Was macht das Skript?
    Kurze Antwort: Es kopiert so viele Hörspiel-Episoden auf einen USB-Stick bis dieser voll ist. Bei erfolgreichen Kopiervorgang, werden die Daten auf der Festplatte verschoben.

    Lange Antwort:

    Spoiler anzeigen

    Die Geschichte zum Skript ist ganz simpel. Ich liebe Hörspiele. Und weil ich auf Arbeit Zugriff auf ein MP3-fähiges Autoradio habe, nehme ich mir diese mit um sie dort zu hören. Am Anfang hatte ich nur 4 Ordner die ich auf neue Episoden prüfen musste. Mitterweile sind aber über 20 und es macht überhaupt keinen Spaß diese per Hand zu überprüfen.

    C
    #cs ----------------------------------------------------------------------------
    
    	 AutoIt Version: 3.3.18.0
    	 Author:         Seppuku
    
    	 Script Function:
    		Befüllt meinen Hörspiel-Stick
    
    #ce ----------------------------------------------------------------------------
    
    
    #include <AutoItConstants.au3>
    #include <File.au3>
    #include <FileConstants.au3>
    
    
    ;Sticklaufwerk
    Global $Stickdrive = "G:\"
    
    Global $HoerspielRoot = "D:\Musik\Hörspiele\"
    Global $HSPStickRoot = $Stickdrive & "03 - HSP\"
    Global $HSPGehoertRoot = $HoerspielRoot & "zuHDD\"
    
    Global $HSPSerieTitel ;Inhalt der Liste.txt als array
    Global $ListeTXT = "Liste.txt"
    
    #Region Prüfung ob Laufwerk und Liste.txt existieren
    
    If Not FileExists($Stickdrive) Then
    
    	MsgBox(0, "Fataler Fehler", "USB-Stick nicht gefunden!")
    	Exit
    
    EndIf
    
    If Not FileExists($ListeTXT) Then
    
    	MsgBox(0, "Fataler Fehler", $ListeTXT & " nicht gefunden!")
    	Exit
    
    EndIf
    
    #EndRegion
    
    
    #Region Stick löschen Anfang
    
    ;alle Ordner in 03 - HSP löschen (inkl den Ordner selbst)
    DirRemove($Stickdrive & "03 - HSP", $DIR_REMOVE) ;1 = immer löschen, auch wenn was drin
    
    ;danach wieder erstellen
    DirCreate($Stickdrive & "03 - HSP")
    
    #EndRegion
    
    
    #Region 02 - HSP
    
    ;Datei öffnen (read only), Serientitel erfassen
    FileOpen($ListeTXT, $FO_READ)
    _FileReadToArray($ListeTXT, $HSPSerieTitel)
    $Titelnummer = 1
    
    ;große Schleife Serientitel aus Datei
    For $Titelnummer = 1 To $HSPSerieTitel[0]
    
    	;Ordner einer Serie erfassen
    	$ArrayEpisodenOrdner = _FileListToArray($HoerspielRoot & $HSPSerieTitel[$Titelnummer], "*", $FLTA_FOLDERS)
    
    	;wenn Ordner vorhanden kopiere, danach verschieben
    	;kleine Schleife Ordner kopieren
    	If IsArray($ArrayEpisodenOrdner) Then
    
    		For $i = 1 To $ArrayEpisodenOrdner[0]
    
    			;kopiere Ordner zu Stick
    			$KopieReturn = DirCopy($HoerspielRoot & $HSPSerieTitel[$Titelnummer] & "\" & $ArrayEpisodenOrdner[$i], $HSPStickRoot & $HSPSerieTitel[$Titelnummer] & "\" & $ArrayEpisodenOrdner[$i])
    
    			;falls Fehler = Stick voll, beende hier
    			If $KopieReturn = 0 Then
    				MsgBox(64, "Fertig", "Stick ist voll!")
    				Exit
    			EndIf
    
    			;wenn erfolgreich kopiert, dann verschiebe Datei zu gehört
    			DirMove($HoerspielRoot & $HSPSerieTitel[$Titelnummer] & "\" & $ArrayEpisodenOrdner[$i], $HSPGehoertRoot & $HSPSerieTitel[$Titelnummer] & "\" & $ArrayEpisodenOrdner[$i])
    
    		Next
    
    	EndIf
    
    Next
    
    #EndRegion
    
    ;Erfolgreiches Ende, noch Platz
    FileClose($ListeTXT)
    MsgBox(0, "Fertig", "Es ist noch Platz!")
    
    Exit
    Alles anzeigen

    Inhalt Liste.txt (Auszug)

    Spoiler anzeigen

    Van Dusen
    Ghostsitter
    John Sinclair
    Midnight Tales
    Faith - The Van Helsing Chronicles

    Als ungelernter Anfänger habe ich dazu noch ein paar Fragen:

    1) Was sagt ein Profi zu meinem Skript? Was würdet ihr anders machen?

    2) Dateien lesen und schreiben kann ich ja problemlos mit z.B. FileReadLine, FileWriteLine, _FileReadToArray und so weiter und so fort. Wozu existiert dann FileOpen bzw. FileClose? Wenn diese beiden Befehle nicht mit drin stehen, funktioniert trotzdem alles so wie es soll.

    3) Beim If-Block If $KopieReturn = 0 Then hab ich in einer früheren Version If @error Then benutzt. Das hat aber nicht funktioniert und ich kapiere das überhaupt nicht. Erst hab ich @error als universales Mittel bei Fehlern gehalten. Also wie ein boolscher Wert (true/false). Aber je mehr ich davon in der Hilfe lese, desto nutzloser wird das Ding. Den Fehler kann ich ja auch mit jeden anderen x-beliebigen Variable auslesen. Was ich dann ja auch mit $KopieReturn gemacht habe. Kann mir jemand das ganz simpel erklären oder ein Beispiel nennen, wo man unbedingt @error braucht?

    Danke!

  • Hallo!

    • Seppuku
    • 30. Oktober 2025 um 10:03

    Hallo!

    Ich habe endlich den Weg ins Forum gefunden und wollte mich kurz vorstellen. Im richtigen Leben heiße ich Martin und spiele schon Ewigkeiten mit Programmierungen herum und versuche so viel es geht zu automatisieren. Dabei hab ich es nie wirklich gelernt (mal von den drei Zeilen Delphi im Informatikunterricht (vor gefühlt 1000 Jahren)). Geblieben bin ich bei Autoit wegen ganz banalen Dingen: Scite öffnet sich auf meinem 12 Jahre alten Uraltrechner in nullkommanix und wenn ich Hilfe brauche, muss ich nur den Cursor auf den entsprechenden Befehl klicken und dann F1 drücken. Ich kenne keine andere IDE bei der es auch so ist. Ja, heuer überhaupt eine Hilfedatei, die offline verfügbar ist. Und nun bin ich hier möchte auch meinen Senf mit dazugeben. Auch wenn es meistens nur ein Danke sein wird.

    Bis dahin!

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™