WinScp nach erfolgreicher Datenübertragung batch auslösen
Glück Auf,
Auf einen externen Server werden Daten bereitsgestellt, die via Winscp (Script) automatisch abgeholt werden, in einen Ordner "Arbeit" und in einen weiteren Ordner "Sicherung" kopiert und dann auf den externen Server gelöscht werden.
Das funktioniert auch alles Super. Nun möchte ich aber eine Mail haben, die den Vorgang mir bestätigt. Das habe ich mittels blat.exe gelöst, hier wird geprüft ob im Ordner "Arbeit" eine Datei liegt, wenn dann bekomme ich eine Mail, auch gut so und richtig.
Nun aber mein Problem: Über Server Aufgabenplanung wird die Batchdatei aller 15 Minuten aufgerufen. Wenn ich aber nicht gleich die Datei aus dem Ordner "Arbeit" nehme zur Weiterverarbeitung (lösche) bekomme ich aller 15 Minuten eine Mail.
Ausführen aller 15 Minuten notewendig, da kann nix geändert werden.
Meine Frage, gibt es ein Event bei WinScp, dass den Kopiervorgang erfolgreich bestätigt und wenn nichts kopiert wird weil noch keine Neue Datei auf den externen Server liegt nix macht ?
Batch was aller 15 Minuten aufgerufen wird:
Auf einen externen Server werden Daten bereitsgestellt, die via Winscp (Script) automatisch abgeholt werden, in einen Ordner "Arbeit" und in einen weiteren Ordner "Sicherung" kopiert und dann auf den externen Server gelöscht werden.
Das funktioniert auch alles Super. Nun möchte ich aber eine Mail haben, die den Vorgang mir bestätigt. Das habe ich mittels blat.exe gelöst, hier wird geprüft ob im Ordner "Arbeit" eine Datei liegt, wenn dann bekomme ich eine Mail, auch gut so und richtig.
Nun aber mein Problem: Über Server Aufgabenplanung wird die Batchdatei aller 15 Minuten aufgerufen. Wenn ich aber nicht gleich die Datei aus dem Ordner "Arbeit" nehme zur Weiterverarbeitung (lösche) bekomme ich aller 15 Minuten eine Mail.
Ausführen aller 15 Minuten notewendig, da kann nix geändert werden.
Meine Frage, gibt es ein Event bei WinScp, dass den Kopiervorgang erfolgreich bestätigt und wenn nichts kopiert wird weil noch keine Neue Datei auf den externen Server liegt nix macht ?
Batch was aller 15 Minuten aufgerufen wird:
cd C:\Program Files (x86)\WinSCP
winscp.exe xyz@0815 /privatekey="xxxxxx-xxx.ppk" /console /command "option batch on" "option confirm off" "get RPT**************.txt \\192.168.1.211\pant\DBF01\Transaktionen_TC\" "get RPT**************.txt q:\Daten\sicher_Import\" "rm RPT**************.txt"
rem Aufruf Mail senden
call 1-mail.cmd
c:
cd c:\windows\system32
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 220900
Url: https://administrator.de/contentid/220900
Ausgedruckt am: 25.11.2024 um 21:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo uwe.name,
du könntest es so lösen: Du checkst nach der WinScp-Übertragung das Verzeichnis "Arbeit" auf vorhandensein von Dateien, wenn es welche gibt werden die in der Batch in ein anderes Verzeichnis verschoben und du via Mail benachrichtigt, andernfalls wenn keine Datei im Verzeichnis ist wird keine Mail verschickt.
Beispiel wie du es umsetzen könntest:
Alternativ probiere es wie @rubberman schreibt, aber ich selber hatte je nach FTP-Server mit dieser Methode vor einiger Zeit unterschiedliche Ergebnisse, d.h. WinSCP hatte nicht immer den ExitCode 1 wenn nichts kopiert wurde; wenns aber bei deinem Server klappt ist das natürlich einfacher.
Grüße Uwe
du könntest es so lösen: Du checkst nach der WinScp-Übertragung das Verzeichnis "Arbeit" auf vorhandensein von Dateien, wenn es welche gibt werden die in der Batch in ein anderes Verzeichnis verschoben und du via Mail benachrichtigt, andernfalls wenn keine Datei im Verzeichnis ist wird keine Mail verschickt.
Beispiel wie du es umsetzen könntest:
for /f %%a IN ('dir /b "c:\Arbeit" ^| find /c /v ""') DO @(
if %%a GTR 0 (
rem Aufruf Mail senden und Dateien in anderes Verzeichnis verschieben
call 1-mail.cmd
move "c:\Arbeit\*.*" "C:\ToDo\"
) else (
REM keine neuen Dateien vorhanden
)
)
Alternativ probiere es wie @rubberman schreibt, aber ich selber hatte je nach FTP-Server mit dieser Methode vor einiger Zeit unterschiedliche Ergebnisse, d.h. WinSCP hatte nicht immer den ExitCode 1 wenn nichts kopiert wurde; wenns aber bei deinem Server klappt ist das natürlich einfacher.
Grüße Uwe
Hallo uwe.name,
Kenne WinScp nicht, aber möglicherweise wird ein ERRORLEVEL-Wert gesetzt.
Siehe winscp.net/eng/docs/faq_script_result
Wenn ich es richtig verstanden habe sollte WinScp fehlschlagen wenn nichts kopiert wird? In dem Fall soll keine Mail gesendet werden?
Dann schreibe als Zeile 3
Grüße
rubberman
Kenne WinScp nicht, aber möglicherweise wird ein ERRORLEVEL-Wert gesetzt.
Siehe winscp.net/eng/docs/faq_script_result
Wenn ich es richtig verstanden habe sollte WinScp fehlschlagen wenn nichts kopiert wird? In dem Fall soll keine Mail gesendet werden?
Dann schreibe als Zeile 3
if errorlevel 1 exit /b
rubberman