if then Abfrage

  • also so sieht es aus

    Nur wenn das File da ist darf die Sicherung laufen, sonst nicht.
    Beim Okay muss immer wieder geprüft werden...


    If FileExists ("r:\zielkontrolle.txt") Then
    ShellExecuteWait($Batch)
    Else
    MsgBox(0, 'Alarm', 'Backup PC einschalten / Ziel prüfen.')
    EndIf

  • pack es doch in eine schleife rein

    [autoit]


    while 1

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

    <deincode>
    sleep(40) ; Prozesorschonender
    wend

    [/autoit]
  • 1. $batch muß auf eine vorhandene Datei verweisen.
    2. meist funktioniert die Funktion "ShellExecuteWait" bei Angabe eines WorkingDir, z.B. die Angabe des Pfades, in dem die Batch liegt...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • ja ich weiß, den Pfad hab ich schon vorher angeben...

    läuft grade im Test

    äähmmm. soory der Aufruf der Batch läuft in einer Schleife...

    while 1
    If FileExists ("r:\zielkontrolle.txt") Then
    ShellExecuteWait($Batch)
    Else
    MsgBox(0, 'Alarm', 'Backup PC einschalten / Ziel prüfen.')
    EndIf
    sleep(40)
    WEnd
    MsgBox(0, 'Fertig', 'Backup abgeschlossen.')

  • Ich habe nur ein bruchteil aus der SB lesen können .. kannst du vllt dein Problem nochmal genau erklären ... viele haben bestimmt die SB nicht gelesen

    Edit: PS: Schau malwenn du ein Beitrag schreibst ist da oben ein symbol mit einem A drauf darein den Code Kopieren ist sehr nützlich

  • also das Script soll alle Tage x pürfen, ob das Backup gelaufen ist. Soweit so gut. Ich wollte jetzt noch das Ziel auf die besagte Datei prüfen, damit sichergestellt ist das beim robocpyx Befehl auch wirklich Quell und Ziel da ist und nicht evtl wo anderes hingeschrieben wird.

    hier das gesatme script

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

    #Include <Date.au3>
    Local $INI = @ScriptDir & '\backupRun.ini', $intervall
    Local $Batch = 'E:\Robocopy\robo_ohne_löschen.bat'
    If Not FileExists($INI) Then
    Do
    $intervall = InputBox('Backup-Intervall', 'Bitte Sicherungsintervall angeben (Tage)', 7)
    Until $intervall <> ''
    IniWrite($INI, 'backup', 'intervall', $intervall)
    IniWrite($INI, 'backup', 'last', '2000/01/01')
    EndIf
    $intervall = IniRead($INI, 'backup', 'intervall', 7)

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

    If _DateDiff('D', IniRead($INI, 'backup', 'last', '2000/01/01'), _NowCalcDate()) < $intervall Then
    Exit; MsgBox(0, 'Abbruch', 'Neue Sicherung noch nicht erforderlich.')
    EndIf

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

    If MsgBox(262180,"Start Backup","Soll das Backup jetzt gestartet werden?") = 7 Then
    Exit MsgBox(0, 'Abbruch', 'Verarbeitung abgebrochen!')
    EndIf

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

    IniWrite($INI, 'backup', 'last', _NowCalcDate())
    while 1
    If FileExists ("r:\zielkontrolle.txt") Then
    ShellExecuteWait($Batch)
    MsgBox(0, 'Fertig', 'Backup abgeschlossen.')
    Else
    MsgBox(0, 'Alarm', 'Backup PC einschalten / Ziel prüfen.')
    EndIf
    sleep(40)
    WEnd

    [/autoit]
  • du startest robocpyx über eine batch ?

    wenn ja warum mit batch ( will nur hintersteigen vllt geht es einfacher )

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

    ShellExecuteWait($Batch) ; Erst backup starten

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

    while 1
    If FileExists ("r:\zielkontrolle.txt") Then
    MsgBox(0, 'Fertig', 'Backup abgeschlossen.')
    Else
    MsgBox(0, 'Alarm', 'Backup PC einschalten / Ziel prüfen.')
    ; ShellExecuteWait($Batch) ; Gegebenfalls batch neu aufrufen nachdem ok gedrückt wurde
    EndIf
    sleep(40)
    WEnd

    [/autoit]
  • mir ist klar das ich das auch dirket kann, aber die Batch war zuerst da .... ;>)
    nein im Ernst, ich würde den Aufruf der Datei etwas allgemeiner halten und dann nur evtl die Datei anpassen, da ich dieses Script wohl öffters einsetze und vorort anpasse... dort habe ich kein Autoit... aber die Überlegung ist berechtigt...

  • oki .. könntest sonst auch ein ini eintrag machen den du aufrufst ..
    Denke du passt ja nur pfade an

  • versuch doch einfach eine datei dahin zu schreiben wenn schreibvorgang io dann ist das verzeichniss da wenn nicht dann ist es nicht da


    Edit:

    Prüft, ob eine Datei oder ein Verzeichnis besteht.

    FileExists ( "path" )

    Parameter

    Path Das zu prüfende Verzeichnis oder die zu prüfende Datei.
    Rückgabewert

    Erfolg: Gibt 1 zurück.
    Fehler: Gibt 0 zurück, wenn das Verzeichnis/die Datei nicht bestehen.


    Prüf doch einfach ob das Lauwerk exestiert

    [autoit]

    if FileExists ( "R:\" ) = 1 then ShellExecuteWait($Batch)

    [/autoit]
  • oder du identifizierst das Laufwerk mittels DriveMapGet
    Success: Returns details of the mapping, e.g. \\server\share

    Da du ja weist, über welchen Share das Laufwaerk R: angesprochen wird,
    kannst Du das auch damit überprüfen ohne eine Datei auf R: zu erstellen.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)