如何使用批次腳本將檔案上傳到 FTP 伺服器?

如何使用批次腳本將檔案上傳到 FTP 伺服器?

我創建了一個名為的批次文件FTP_automation.bat,其中包含以下程式碼。

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

當我運行時FTP_automation.bat,它沒有上傳我傳遞參數的檔案。

腳本ftp在批次檔中提到之後停止,並且它沒有連接到我在批次文件中傳遞的 IP 位址和連接埠號碼。

如果我手動輸入這些命令,它就可以正常工作。我應該對這段程式碼進行什麼更正?

答案1

您必須將ftp命令放入單獨的文件中。您不能將您在終端機上輸入的行放入文件.bat並期望其行為相同。該.bat檔案只能包含 Windows 命令。當您ftp從批次檔執行命令時,它會等待其命令。它不知道該.bat文件,因此無法從那裡讀取命令。

因此,請將您的命令放入單獨的文字檔案中(例如ftp.txt)。

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

並從文件中運行它,.bat如下所示:

ftp -s:ftp.txt
pause

如果您確實需要使用動態檔案名稱(來自環境變數),則需要即時建立文字檔案。不ftp支援變數。


如果您使用更好的 FTP 用戶端,您可能既可以在批次檔中包含命令,又可以使用環境變數。

例如與WinSCP:

set MyPath=E\PGP\test_pg

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

pause

有關使用 WinSCP 編寫腳本的介紹,請參閱:
https://winscp.net/eng/docs/guide_automation

還有一個指南將 Windows FTP 腳本轉換為 WinSCP 腳本。您甚至可以擁有 WinSCP GUI產生批次文件為你。

(我是WinSCP的作者)

相關內容