Loop, Break und ExitApp - funktioniert nicht...

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Loop, Break und ExitApp - funktioniert nicht...

02 Feb 2016, 16:48

Hallo Mitstreiter,

leider wird mein Script aber nicht beendet, wenn keine externen Laufwerke gefunden werden...

Code: Select all

Else  ; falls kein externes Laufwerk angeschlossen ist
      {
		MsgBox, 4, USB Laufwerk M oder K nicht gefunden, ###################################################`n###################################################`n`n`nUSB Laufwerk M oder K nicht gefunden`nBitte eine externe Sicherungs-Festplatte anschließen!!!`n`nNach dem Anschließen JA drücken.`n`nMöchten Sie jetzt fortfahren?`n(Drücken Sie JA oder NEIN)`n`n`n###################################################`n###################################################
		IfMsgBox No
		{
		break  ; Die Schleife wird unterbrochen
		ExitApp ; Und das Script wird beendet
		}
		Gosub, USBLoop
		}
Nun aber der Reihe nach:

Code: Select all

;  #NoTrayIcon ; Das AHK Symbol wird nicht angezeigt
#NoEnv ; Nicht nachsehen, ob leere Varibalen evtl. Umgebungsvariablen sind, beschleunigt die Laufzeit
#SingleInstance force ; Bei Neustart des Scriptes die alte Instanz ohne Nachfrage ersetzen
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Dateioperationen werden im Scriptverzeichnis vorgenommen, wenn kein Pfad angegeben wird.
#Persistent ; Keeps a script permanently running - fuer Timer und Schleife notwendig
Dann kommen die Variablen

Code: Select all


; ------------------- Variablen für die Sicherungsanweisungen ---------------------------------------
; WICHTIG: Variablen sind grundsaetzlich zuerst im Skript anzulegen!!!! -----------------------------
ProgPfad := "C:\Autostart\FreeFileSyncPortable\FreeFileSync.exe" ; Aufruf des Programmes mit "%ProgPfad%"
; ProgPfad := "C:\Program Files\FreeFileSync\FreeFileSync.exe" ; Aufruf des Programmes mit "%ProgPfad%"
Spiegelung_USB_2016 := "C:\Autostart\Daten_zu_K_oder_M_2016.ffs_batch" ; Eintrag des Pfades zur Datei nun mit: "%Spiegelung_USB_2016%"

Pruefdatei_001 := "K:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt"
Pruefdatei_002 := "M:\###_Testdatei_Synchronisation---Nicht-Loeschen.txt"

Quelle_001_E := "E:\1--Beispielordner" ; Eintrag der Quelle nun mit: "%Quelle_001_E%"
Quelle_002_E := "E:\5--PortableApps\ThunderbirdPortable" ; Eintrag der Quelle nun mit: "%Quelle_002_E%"
Quelle_003_D := "D:\" ; Eintrag der Quelle nun mit: "%Quelle_003_D%"

Ziel_K_001 := "K:\1--Beispielordner" ; Eintrag des Zieles nun mit: "%Ziel_K_001%"
Ziel_K_002 := "K:\ThunderbirdPortable-Sicherung" ; Eintrag des Zieles nun mit: "%Ziel_K_002%"
Ziel_K_003 := "K:\" ; Eintrag des Zieles nun mit: "%Ziel_K_003%"

Ziel_M_001 := "M:\1--Beispielordner" ; Eintrag des Zieles nun mit: "%Ziel_M_001%"
Ziel_M_002 := "M:\ThunderbirdPortable-Sicherung" ; Eintrag des Zieles nun mit: "%Ziel_M_002%"
Ziel_M_003 := "M:\" ; Eintrag des Zieles nun mit: "%Ziel_M_003%"


; --- Fuehre den Abgleich der Ordner durch - wie in den Pfadbezeichnungen der Variablen angegeben ---
; RunWait, "%ProgPfad%" "%Spiegelung_USB_2016%" -leftdir "%Quelle_D%" -rightdir "%Ziel%",,
; ---------------------------------------------------------------------------------------------------


; ------------ Variablen fuer den Mailversand - immer an den Anfang eines Scriptes -----------------------------------
SwithMailOrdner := "C:\Autostart\SwithMail\"
SwithMail_XML := "SwithMail_JL.xml"
E_Mail_von := "USB Datensicherung Server Muster"
Betreff_der_Mail := "Check der USB Datensicherung von Server Muster"
; --------------------------------------------------------------------------------------------------------------------


; ----------------------------------------------------------------------------------------------------------------------
; ------------ Variablen fuer den Logfilereader ------------------------------------------------------------------------
PfadzurLogdatei := "C:\Autostart\zzzz_Batch_Logfiles_M_oder_K\"
AlteLogdateien := "C:\Autostart\zzzz_Batch_Logfiles_M_oder_K\Alte-Logdateien\"
Ergebnis := ""
LogDetails := ""
FFSyncVar1 := "Die folgenden Elemente haben ungelöste Konflikte und werden nicht synchronisiert werden"
FFSyncVar2 := "Synchronisation mit Fehlern abgeschlossen"
FFSyncVar3 := "Synchronisation mit Warnungen abgeschlossen"
FFSyncVar4 := "Synchronisation gestoppt"
; ----------------------------------------------------------------------------------------------------------------------
; Meldung bei Fehler
Meldung_Fehler := "`n############################################################################################"
     . "`n##################---Fehler bei der Synchronisation / Datensicherung!!!---##################"
     . "`n############################################################################################"
; Meldung bei Erfolg
Meldung_Erfolg := "`n-------------------- Die Synchronisation / Datensicherung war erfolgreich ------------------"
; ----------------------------------------------------------------------------------------------------------------------

Dann die Schleife!

Code: Select all

USBLoop:

loop ; Die Schleifenanweisung wird staendig wiederholt, Quelle= http://www.autohotkey.com/board/topic/71642-help-with-loop-for-scanning-folders-to-check-if-files-exist/
{

   If FileExist(Pruefdatei_001)       ; wenn das Laufwerk K angeschlossen ist
      {
	  RunWait, "%ProgPfad%" "%Spiegelung_USB_2016%" -leftdir "%Quelle_001_E%" -rightdir "%Ziel_K_001%",, ; Fuehre den Abgleich der Ordner durch
	  RunWait, "%ProgPfad%" "%Spiegelung_USB_2016%" -leftdir "%Quelle_002_E%" -rightdir "%Ziel_K_002%",, ; Fuehre den Abgleich der Ordner durch
	  RunWait, "%ProgPfad%" "%Spiegelung_USB_2016%" -leftdir "%Quelle_003_D%" -rightdir "%Ziel_K_003%",, ; Fuehre den Abgleich der Ordner durch
	  }
   
   Else If FileExist(Pruefdatei_002)  ; sonst wenn das Laufwerk M angeschlossen ist
      {
	  RunWait, "%ProgPfad%" "%Spiegelung_USB_2016%" -leftdir "%Quelle_001_E%" -rightdir "%Ziel_M_001%",, ; Fuehre den Abgleich der Ordner durch
	  RunWait, "%ProgPfad%" "%Spiegelung_USB_2016%" -leftdir "%Quelle_002_E%" -rightdir "%Ziel_M_002%",, ; Fuehre den Abgleich der Ordner durch
	  RunWait, "%ProgPfad%" "%Spiegelung_USB_2016%" -leftdir "%Quelle_003_D%" -rightdir "%Ziel_M_003%",, ; Fuehre den Abgleich der Ordner durch
	  }
	
	Else  ; falls kein externes Laufwerk angeschlossen ist
      {
		MsgBox, 4, USB Laufwerk M oder K nicht gefunden, ###################################################`n###################################################`n`n`nUSB Laufwerk M oder K nicht gefunden`nBitte eine externe Sicherungs-Festplatte anschließen!!!`n`nNach dem Anschließen JA drücken.`n`nMöchten Sie jetzt fortfahren?`n(Drücken Sie JA oder NEIN)`n`n`n###################################################`n###################################################
		IfMsgBox No
		{
		break  ; Die Schleife wird unterbrochen
		ExitApp ; Und das Script wird beendet
		}
		Gosub, USBLoop
		}

; .. wenn eines der ersten beiden Laufwerke gefunden wurde, tue dies und jenes.....


; ---------- Verschiebe anschliessend die Logdateien -----------------------------------------------------------------------------------
FileMove, %PfadzurLogdatei%*.log, %AlteLogdateien%  ; Verschiebt die Datei, ohne sie umzubenennen. Beispiel: FileMove, C:\Meine Dokumente\Liste1.txt, D:\Backup\ 


	
	Break  ; Die Schleife wird unterbrochen
}

Ich kann auch noch einmal das ganze Script posten, falls notwendig...
Greetings Best-Code-in-Use
Rohwedder
Posts: 7683
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: Loop, Break und ExitApp - funktioniert nicht...

03 Feb 2016, 00:14

Hallo, ich schätze mal:
Das ExitApp hinter dem break (break ; Die Schleife wird unterbrochen) kann nie ausgeführt werden.
Einfach mal die break-Zeile löschen.

Gruß
Rohwedder
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

macht Sinn...

03 Feb 2016, 03:24

Hallo Rohwedder,

alles klar, ich danke Dir, genauso funktioniert es jetzt auch.
Ich war so in dem Gedanken gefangen, das die Schleife unterbrochen werden muss. Auf das Einfachste bin ich dabei leider nicht selbst gekommen bin.

Schön das es dieses Forum gibt.
Greetings Best-Code-in-Use

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: Ragnar and 25 guests