Wie lade ich mit einem Batch-Skript eine Datei auf einen FTP-Server hoch?

Wie lade ich mit einem Batch-Skript eine Datei auf einen FTP-Server hoch?

Ich habe eine Batchdatei namens erstellt FTP_automation.bat, die den folgenden Code enthält.

SET MyPath=E\PGP\test_pg
ftp
open 142.245.30.165 21
TESTA9MS
test11
binary
put %MyPath%
quit
Pause

Beim Ausführen FTP_automation.batwird die Datei, an die ich den Parameter übergebe, nicht hochgeladen.

Das Skript wird gemäß ftpder Angabe in der Batchdatei angehalten und stellt keine Verbindung mit der IP-Adresse und Portnummer her, die ich in der Batchdatei übergeben habe.

Wenn ich diese Befehle manuell eingetippt habe, hat es einwandfrei funktioniert. Welche Korrektur muss ich an diesem Code vornehmen?

Antwort1

Sie müssen die ftpBefehle in eine separate Datei schreiben. Sie können nicht Zeilen, die Sie sonst auf dem Terminal eingeben, in eine .batDatei schreiben und erwarten, dass sie sich identisch verhält. Die .batDatei kann nur Windows-Befehle enthalten. Wenn Sie den Befehl aus der Batchdatei ausführen ftp, wartet er auf seine Befehle. Er kennt die .batDatei nicht und kann die Befehle daher nicht von dort lesen.

Geben Sie Ihre Befehle daher in einer separaten Textdatei ein (z. B. ftp.txt).

open 142.245.30.165 21
TESTA9MS
test11
binary
put E\PGP\test_pg
quit

Und führen Sie es aus der .batDatei wie folgt aus:

ftp -s:ftp.txt
pause

Wenn Sie wirklich einen dynamischen Dateinamen (aus einer Umgebungsvariable) verwenden müssen, müssen Sie die Textdatei im laufenden Betrieb erstellen. ftpVariablen werden nicht unterstützt.


Wenn Sie einen besseren FTP-Client verwenden, können Sie möglicherweise sowohl die Befehle in der Batchdatei haben als auch die Umgebungsvariablen verwenden.

Zum Beispiel mitWinSCP:

set MyPath=E\PGP\test_pg

winscp.com /command ^
    "open ftp://TESTA9MS:[email protected]" ^
    "put ""%MyPath%""" ^
    "exit"

pause

Eine Einführung in die Skripterstellung mit WinSCP finden Sie unter:
https://winscp.net/eng/docs/guide_automation

Es gibt auch einen Leitfaden fürKonvertieren eines Windows-FTP-Skripts in ein WinSCP-Skript. Sie können sogar WinSCP GUI habenGenerieren Sie die Batchdateifür Sie.

(Ich bin der Autor von WinSCP)

verwandte Informationen