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

Ich habe eine Batchdatei namens FTP_automation.bat erstellt, 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

Wenn ich FTP_automation.bat ausführe, wird die Datei nicht hochgeladen, an die ich den Parameter übergebe.

Das Skript stoppt nach ftp, das in der Batchdatei erwähnt wird, und stellt keine Verbindung zu der IP-Adresse und Portnummer her, die ich in der Batchdatei übergeben habe.

Wenn ich diese Befehle manuell eingegeben habe, hat es perfekt funktioniert. Welche Korrektur soll ich damit machen code?

Author: Peter Mortensen, 2015-05-14

1 answers

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

Also lege deine Befehle in eine separate Textdatei (zB ftp.txt).

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

Und führen Sie es aus dem .bat - Datei wie:

ftp -s:ftp.txt
pause

Wenn Sie wirklich einen dynamischen Dateinamen (aus einer Umgebungsvariablen) verwenden müssen, müssen Sie die Textdatei im laufenden Betrieb erstellen. Das ftp unterstützt keine Variablen.


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

Zum Beispiel mit WinSCP:

set MyPath=E\PGP\test_pg

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

pause

Für eine Einführung in das Scripting mit WinSCP finden:
https://winscp.net/eng/docs/guide_automation

Es gibt auch eine Anleitung zum Konvertieren von Windows FTP Script in WinSCP script.

(ich bin der Autor von WinSCP)

 6
Author: Martin Prikryl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-02-26 08:20:41