我創建了一個名為的批次文件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的作者)