
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.bat
wird die Datei, an die ich den Parameter übergebe, nicht hochgeladen.
Das Skript wird gemäß ftp
der 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 ftp
Befehle in eine separate Datei schreiben. Sie können nicht Zeilen, die Sie sonst auf dem Terminal eingeben, in eine .bat
Datei schreiben und erwarten, dass sie sich identisch verhält. Die .bat
Datei kann nur Windows-Befehle enthalten. Wenn Sie den Befehl aus der Batchdatei ausführen ftp
, wartet er auf seine Befehle. Er kennt die .bat
Datei 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 .bat
Datei 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. ftp
Variablen 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)