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

1

Ich habe eine Batchdatei mit dem Namen erstellt, FTP_automation.batdie 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 aktiv bin FTP_automation.bat, wird die Datei nicht hochgeladen. Ich übergebe den Parameter.

Das Skript stoppt, ftpworauf in der Batchdatei hingewiesen wird, und stellt keine Verbindung zu der IP-Adresse und der Portnummer her, die ich in der Batchdatei übergeben habe.

Wenn ich diese Befehle manuell eingab, funktionierte sie einwandfrei. Welche Korrektur soll ich an diesem Code vornehmen?

abhayk
quelle
2
Vorausgesetzt, die Reihenfolge ist korrekt, werden die Befehle möglicherweise zu schnell gesendet. Es gibt viele kostenlose Tools, um Batch-FTP richtig zu machen. Erfinde das Rad nicht neu ...
Dude namens Ben
Hier gehts superuser.com/q/242763/300548
Dude namens Ben

Antworten:

5

Sie müssen die ftpBefehle in einer separaten Datei ablegen. Sie können keine Zeilen, die Sie anderweitig eingeben, in die .batDatei einbinden und erwarten, dass sie sich identisch verhalten. Die .batDatei kann nur Windows-Befehle enthalten. Wenn Sie den ftpBefehl in der Batchdatei ausführen, wartet er auf seine Befehle. Es kennt die .batDatei nicht und kann daher die Befehle von dort nicht lesen.

Legen Sie also Ihre Befehle in einer separaten Textdatei ab (z ftp.txt. B. ).

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 Umgebungsvariablen) verwenden müssen, müssen Sie die Textdatei sofort erstellen. Das ftpunterstützt keine Variablen.


Wenn Sie einen besseren FTP-Client verwenden, können Sie möglicherweise sowohl die Befehle in der Batchdatei als auch 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

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

Es gibt auch eine Anleitung zum Konvertieren von Windows FTP-Skripten in WinSCP-Skripten .

(Ich bin der Autor von WinSCP)

Martin Prikryl
quelle