Zum Hauptinhalt springen

Automatischer Upload (Skript + Zeitplaner) - Windows

Automatisieren Sie SFTP-Dateiübertragungen mit Batch-Skript und Windows Aufgabenplanung.

Verfasst von Manon Champion

1. Skript für SFTP-Upload

Dieses Skript automatisiert die Übertragung von Dateien aus einem lokalen Verzeichnis auf einen entfernten SFTP-Server unter Verwendung eines privaten SSH-Schlüssels zur Authentifizierung.

Anleitung

  • Skript erstellen:

    1. Kopieren Sie das Vorlage-Skript in Ihren Texteditor (Notepad, Notepad++, Visual Studio Code, etc.).

    2. Passen Sie den Abschnitt "Benutzerdefinierte Variablen – der einzige zu konfigurierende Teil" an.

@echo offREM === Benutzerdefinierte Variablen – der einzige zu konfigurierende Teil ===set LOCAL_DIR=C:\FolderOnYourServer\set ARCHIVE_DIR=C:\ArchiveFolderOnYourServer\set SFTP_DIR=/SFTP_path/set USERNAME=sftp_user.agicapset PRIVATE_KEY=C:\FolderOnYourServer\private_key.ppkset LOG_FILE=C:\FolderOnYourServer\log.logset WINSCP=C:\Program Files (x86)\WinSCP\winscp.comREM === Grundlegende Prüfungen ===if not exist "%WINSCP%" (    echo Fehler: WinSCP ist nicht installiert.    goto :exit)if not exist "%PRIVATE_KEY%" (    echo Fehler: Privater Schlüssel nicht gefunden.    goto :exit)REM === SFTP-Übertragung ausführen ===echo. 2> "%LOG_FILE%""%WINSCP%" /log="%LOG_FILE%" /command ^    "open sftp://%USERNAME%@files.agicap.com:2222 -privatekey=\"%PRIVATE_KEY%\" -hostkey=\"*\"" ^    "put -transfer=auto \"%LOCAL_DIR%\*\" \"%SFTP_DIR%\"" ^    "exit"REM === Archivierung nach der Übertragung ===set WINSCP_RESULT=%ERRORLEVEL%if %WINSCP_RESULT% equ 0 (    move /Y "%LOCAL_DIR%\*" "%ARCHIVE_DIR%") else (    echo "Die Übertragung ist fehlgeschlagen, prüfen Sie die Protokolldatei: %LOG_FILE%":exittimeout /t 10

  • Anpassung:

    1. LOCAL_DIR : Verzeichnis auf Ihrem Server mit den zu sendenden Dateien.

    2. ARCHIVE_DIR : Verzeichnis auf Ihrem Server zum Archivieren gesendeter Dateien.

    3. SFTP_DIR : Zielpfad auf dem SFTP-Server (bei Agicap erfragen).

    4. USERNAME : Von Agicap bereitgestellter Benutzername.

    5. PRIVATE_KEY : Pfad zum privaten SSH-Schlüssel.

    6. LOG_FILE : Protokolldatei zur Aufzeichnung der Ausführungsdetails.

  • Speichern und ausführen:

    1. Speichern Sie die Datei mit der Endung .bat (Beispiel: sftp_upload_script.bat).

    2. Doppelklicken Sie auf die Datei, um das Skript auszuführen und zu überprüfen, ob es wie erwartet funktioniert.

2. Skript-Planung

Nachdem Sie Ihr Skript erstellt und validiert haben, können Sie die automatische Ausführung mit dem Windows Aufgabenplaner einrichten. Diese Anleitung erklärt, wie Sie geplante Aufgaben für Ihre Skripte konfigurieren.

Verzeichnisstruktur

Empfohlene Dateiorganisation:

C:\Agicap\   ├── Logs\         (für Protokolldateien)   ├── Exports\      (für Dateien, die auf Übertragung warten)   ├── Archives\     (für Sicherung übertragener Dateien)   ├── Scripts\     (legen Sie Ihre Bat-Skripte hier ab)   ├── Keys\     (legen Sie Ihre privaten und öffentlichen Schlüssel hier ab)

Automatisierte Ausführung einer Aufgabe einrichten

  • Aufgabenplanung öffnen

    1. Suchen Sie im Windows-Startmenü nach "Aufgabenplanung"

    2. Starten Sie die Anwendung

  • Neue geplante Aufgabe erstellen

    1. Wählen Sie im Menü "Aktion" die Option "Aufgabe erstellen"

  • Aufgabeneinstellungen konfigurieren

    1. Grundlegende Informationen

      • Vergeben Sie einen aussagekräftigen Namen und eine Beschreibung

  • Planungseinstellungen

    • Wählen Sie die Häufigkeit "Täglich"

    • Wählen Sie Ihre gewünschte Startzeit (z. B. 5:30 Uhr)

    • Stellen Sie sicher, dass "Alle 1 Tage wiederholen" ausgewählt ist

  • Aktion konfigurieren

    • Wählen Sie "Programm starten"

    • Navigieren Sie zu Ihrer Skriptdatei und wählen Sie diese aus

  • Abschließende Einrichtung

    1. Überprüfen Sie alle Konfigurationsdetails

    2. Klicken Sie auf "Fertig stellen", um den Zeitplan zu aktivieren

    3. Ihre Aufgabe erscheint nun in der Aufgabenplaner-Bibliothek, wo Sie die Einstellungen bei Bedarf anpassen können

Hat dies deine Frage beantwortet?